Zum Inhalt springen

jScrollPane und JButton nur in neuem Fenster


Empfohlene Beiträge

Geschrieben

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);

}

}

Geschrieben

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

Geschrieben

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?

Geschrieben

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

Geschrieben

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...

Geschrieben

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

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...