ERLEDIGT
JA
JA
ANTWORTEN
2
2
ZUGRIFFE
3192
3192
EMPFEHLEN
-
22.04.06 03:17 #1
Rookie
- Registriert seit
- Apr 2006
- Beiträge
- 9
Hey Leute,
Ich habe folgendes Problem:
Ich will eine JComboBox die eine bestimmte breite hat und sich nicht dem längstem Item anpasst (erledigt)
Anschließend soll das Popup wenn man es öffnet groß genug sein um die Items in voller länge sehen zu können (erledigt, mit PopupListener-"Hack")
Nun kommt mein Problem: Das Popup ist zwar an sich größer, aber die Items in dem Popup samt Scrollbar (dem JScrollPane aus dem PopupMenu) werden trotzdem nicht größer! Das ganze hängt nur mit dem GridBagLayout zusammen, also mit der Breite der Zelle!
ohne GridBagLayout funktioniert das ganze, kann mir wer helfen das auch für das GridBagLayout zum laufen zu bekommen? Wie gesagt das Problem liegt an der Zellen-Breite, da die Items exakt immernoch die breite der Zelle haben!
Ist relativ schwer zu verstehen, deswegen hier ein Beispiel: (nach ausführen sollte es sofort selbsterklärend sein)
vielen Dank im Vorraus Leute!
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
import javax.swing.*; import javax.swing.event.PopupMenuListener; import javax.swing.event.PopupMenuEvent; import java.awt.*; import java.util.Vector; public class Test extends JFrame implements PopupMenuListener{ public JPanel panel = new JPanel(); public GridBagLayout gbl = new GridBagLayout(); public Vector<String> vecValues = new Vector<String>(); public JLabel labelName = new JLabel("Blubb"); public JComboBox comboBox1 = new JComboBox(vecValues); public Test() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); for(int i = 0; i < 20; i++) vecValues.addElement(i + "cccccccccccccccccccccccccccc"); labelName.setPreferredSize(new Dimension(100, (int) labelName.getPreferredSize().getHeight())); comboBox1.setPrototypeDisplayValue(0); comboBox1.setSelectedIndex(0); panel.setLayout(gbl); getContentPane().add(panel); addComponent(panel, gbl, labelName , 0, 0, 1, 1, 1.0, 1.0, 10, 10, 10, 10); addComponent(panel, gbl, comboBox1 , 0, 1, 1, 1, 0.0, 0.0, 10, 10, 10, 10); comboBox1.addPopupMenuListener(this); pack(); } public void popupMenuWillBecomeVisible(PopupMenuEvent e) { JComboBox box = (JComboBox) e.getSource(); Object comp = box.getUI().getAccessibleChild(box, 0); if (!(comp instanceof JPopupMenu)) return; JComponent scrollPane = (JComponent) ((JPopupMenu) comp).getComponent(0); Dimension size = new Dimension(); size.width = 200; size.height = scrollPane.getPreferredSize().height; scrollPane.setPreferredSize(size); } public void popupMenuWillBecomeInvisible(PopupMenuEvent event) {} public void popupMenuCanceled(PopupMenuEvent event) {} private void addComponent(Container cont, GridBagLayout gbl, Component c, int x, int y, int width, int height, double weightx, double weighty, int ... iInsets) { int[] insets = new int[]{0, 0, 0, 0}; if(iInsets.length > 4) { throw new IllegalArgumentException("max 4 parameters allowed for iInsets"); } GridBagConstraints gbc = new GridBagConstraints(); gbc.fill = GridBagConstraints.BOTH; // wie Komponente Bereich füllen soll gbc.gridx = x; // x-Position gbc.gridy = y; // <-Position gbc.gridwidth = width; // Breite gbc.gridheight = height; // Höhe gbc.weightx = weightx; gbc.weighty = weighty; System.arraycopy(iInsets, 0, insets, 0, iInsets.length); gbc.insets = new Insets(insets[0], insets[1], insets[2], insets[3]); // Abstände definieren gbl.setConstraints(c, gbc); cont.add(c); } public static void main (String args[]) { new Test(); } }
-
22.04.06 09:11 #2
Mitglied Brokat
- Registriert seit
- May 2005
- Ort
- NRW
- Beiträge
- 408
Hast du dir das http://www.java2s.com/Code/Java/Swin...BoxExample.htm
schon mal angesehen, klingt nachdem was du gerne realisieren möchtest..
mfg
elmatoBeen there, done that, got the T-Shirt..
-
22.04.06 17:58 #3
Rookie
- Registriert seit
- Apr 2006
- Beiträge
- 9
jo genau das wollte ich eigentlich verhindern... wollte eigentlich dafür nich extra dem Model umschreiben...
hmm schau ich mir aber gleich mal an
Ähnliche Themen
-
Photoshop CS5 - Problem beim verschieben und vergrößern eines Bildes. Bug ?
Von Tigerking im Forum PhotoshopAntworten: 6Letzter Beitrag: 11.01.11, 14:35 -
Div wird beim vergrößern verkleinert?!
Von Major18 im Forum CSSAntworten: 4Letzter Beitrag: 14.02.10, 16:40 -
Breite einer JComboBox im GridBagLayout
Von Hypnos im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 1Letzter Beitrag: 22.10.05, 17:57 -
Positionierung der Elemente beim GridBagLayout
Von Aurelie im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 2Letzter Beitrag: 06.08.05, 23:23 -
Pause beim Vergrößern
Von meste im Forum Flash PlattformAntworten: 6Letzter Beitrag: 02.08.05, 16:36




Zitieren
Login