Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

jScrollPane und JButton nur in neuem Fenster

Empfohlene Antworten

Veröffentlicht

Ich habe folgende JList in einer großen GUI. Ich möchte gerne eine JScrollPane und einen JButton der JList hinzufügen, aber es klappt zum verrecken nicht. In einem neuen Frame ist es kein Problem, nur im haupt-fenster klappt es nicht. Liegt wohl an der ContentPane. Aber wie krieg ich die beiden Dinge in die JList??

{

public static JList jList1;

//private JPanel jPanel1 = new JPanel();

//private XYLayout xYLayout2 = new XYLayout();

public void setJLabel()

{

TagLabel.setText(maincommander.jListInfo[0][0]);

jList1 = new JList(maincommander.jListInfo[0]);

jList1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

}

}

Du weist schon, dass eine JList kein Fenster (JFrmae, JDialog) ist? Eine JList ist eine Auswahlbox! In die kannst du nicht einfach einen Button oder Scollfeld einfügen!

Dein Fenster ist entweder ein JFrame oder JDialog. Dort kannst du einen Button dazufügen, du kannst auch ein Scrollfeld hinzufügen. Diesem Scrollfeld wird dann eine bspw. eine JList zugeordnet.

Dann hast du ein Fenster mit Button und Listenfeld.

Hoffe das hilft dir weiter. Ich würde mir an deinser Stelle einfach mal ein Tutorial über AWT/Swing reinzerren!

Grüßle

Wenn du dir das Beispiel anschaust, wirst du feststellen, dass das ein JFrame ist, in den zwei Buttons eingefügt wurden (dem Frame! nicht der JList!). Der Frame hat dann noch eine Textarea und ein Scollpanel, dem eine JLIst zugefügt wurde. Also genau wie ichs oben beschrieben habe.

Das man einer JList einen Renderer bauen kann, die Checkboxen oder sonstiges aufnimmt, steht ausser Frage, ,allerdings war das glaub ich nicht das Ziel dieses Threads, oder?

Ist mir schon bewußt. Die JScrollPane hab ich auch 5min nach erstellung des Threads hinbekommen. Und ein Button in eine JList einfügen, geht auch, was nachfolgender Code zeigt.

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Listing3710
extends JFrame
implements ActionListener
{
static final String[] DATA = {
"Hund", "Katze", "Meerschweinchen", "Tiger", "Maus",
"Fisch", "Leopard", "Schimpanse", "Kuh", "Pferd",
"Reh", "Huhn", "Marder", "Adler", "Nilpferd"
};

private JList list;

public Listing3710()
{
super("JList");
addWindowListener(new WindowClosingAdapter(true));
Container cp = getContentPane();
//Liste
list = new JList(DATA);
list.setSelectionMode(
ListSelectionModel.MULTIPLE_INTERVAL_SELECTION
);
list.setSelectedIndex(2);
cp.add(new JScrollPane(list), BorderLayout.CENTER);
//Ausgabe-Button
JButton button = new JButton("Ausgabe");
button.addActionListener(this);
cp.add(button, BorderLayout.SOUTH);
}

public void actionPerformed(ActionEvent event)
{
String cmd = event.getActionCommand();
if (cmd.equals("Ausgabe")) {
System.out.println("---");
ListModel lm = list.getModel();
int[] sel = list.getSelectedIndices();
for (int i = 0; i < sel.length; ++i) {
String value = (String)lm.getElementAt(sel[i]);
System.out.println(" " + value);
}
}
}

public static void main(String[] args)
{
Listing3710 frame = new Listing3710();
frame.setLocation(100, 100);
frame.setSize(200, 200);
frame.setVisible(true);
}
}[/PHP]

Der JList wird das Array 'DATA' übergeben, JScrollPane & JButton hinzugefügt und in neuem Frame geöffnet.

Danke für eure Hilfe.

Gruß, SHifTER

Wieder das was ich schon 2 mal erzählt habe ;)

Der Button wird nicht (!!!) der JList hinzugefügt, sondern deiner contentPane! contentPane != JList.

Ebenso wird die Scrollpane nicht der JList hinzugefügt, sondern umgekehrt.

Aber es funktioniert ja, da will ich mich nicht über Begrifflichkeiten streiten. Ich denke für diech ist wichtig, dass dus zum Laufen bekommen hast. Allerdings würd ich mir die Sache irgendwann nochmal in Ruhe anschauen...

Ja, also dass die JList in die JScrollPane kommt, weiß ich jetzt (auch irgendwie logisch). Das Problem mit dem JButton lag an der ContentPane, jetzt habe ich auf die RootPane ne neue ContentPane gelegt und die zeigt jetzt den Button an.

Danke für deine Hilfe. Und in Ruhe kann ich mir die Sachen ansehen, wenn ich keinen Zeit- bzw. Termin-druck mehr habe. Aber das Programm muss ja fertig werden.....

Gruß, SHifTER

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.