Hallo,
ich beschäftige mich grade mit der JComboBox und dem JPopupMenu.
Und ich stieß auf ein Problem, als ich die Größe des PopupMenu's ändern wollte, welches aber schnell gelöst wurde: Keine Methode wie getPopupMenu() oder ähnliches, um das PopupMenu abzufragen.
Doch nun ergibt sich ein neues Problem, nachdem die Größe verändert wurde: Das PopupMenu(Fenster) ist größer, aber alles in dem Menu natürlich nicht. Dasselbe natürlich auch andersrum: Menu kleiner, Inhalt nicht.
Ich hab schon mehrere Versuche, wie zum Beispiel mit instanceof die JScrollPane oder ähnliches abzufragen und dann die Größe zu verändern, aber funktioniert hat es nicht oder nur bedingt.
Hat jemand damit schon gearbeitet und vielleicht sogar eine Lösung oder einen Ansatz?
KSKB:
Um den Fehler zu sehen müssen 8 Einträge hinzugefügt werden.
Vielen Dank!
ich beschäftige mich grade mit der JComboBox und dem JPopupMenu.
Und ich stieß auf ein Problem, als ich die Größe des PopupMenu's ändern wollte, welches aber schnell gelöst wurde: Keine Methode wie getPopupMenu() oder ähnliches, um das PopupMenu abzufragen.
Doch nun ergibt sich ein neues Problem, nachdem die Größe verändert wurde: Das PopupMenu(Fenster) ist größer, aber alles in dem Menu natürlich nicht. Dasselbe natürlich auch andersrum: Menu kleiner, Inhalt nicht.
Ich hab schon mehrere Versuche, wie zum Beispiel mit instanceof die JScrollPane oder ähnliches abzufragen und dann die Größe zu verändern, aber funktioniert hat es nicht oder nur bedingt.
Hat jemand damit schon gearbeitet und vielleicht sogar eine Lösung oder einen Ansatz?
KSKB:
Um den Fehler zu sehen müssen 8 Einträge hinzugefügt werden.
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JCB extends JFrame implements ActionListener
{
JComboBox <String> jcb;
int count = 1;
public JCB()
{
setSize(300,300);
setTitle("JCB-Test");
setLayout(new BorderLayout());
jcb = new JComboBox <String> ();
Component com = (Container)jcb.getUI().getAccessibleChild(jcb,0);
if (com instanceof JPopupMenu)
{
JPopupMenu jpm = (JPopupMenu) com;
jpm.setPopupSize(getWidth()-20,200);
/*
com = (Container)jpm.getUI().getAccessibleChild(jpm,0);
if(com instanceof JScrollPane)
{
JScrollPane jsp = (JScrollPane) com;
jsp.setPreferredSize(new Dimension(getWidth()-20,20));
}
*/
}
JButton jbt = new JButton("Eintrag hinzufügen");
jbt.addActionListener(this);
add(jcb, BorderLayout.NORTH);
add(jbt, BorderLayout.SOUTH);
setVisible(true);
}
public static void main(String[]args)
{
new JCB();
}
public void actionPerformed(ActionEvent a)
{
jcb.addItem("Eintrag "+count);
count++;
}
}
Vielen Dank!