BoxLayout linksbündig
lima-city → Forum → Programmiersprachen → Java
antworten
beispiel
code
container
dank
dimension
element
foto
gut danke
import
jemand
kleinen anpassungen
label
links ausrichten
problem
swing
tun
url
west
westen
-
Hallo zusammen,
mein gesamter Content ist ein BorderLayout. Im Westen des BorderLayouts habe ich ein BoxLayout, welches wiederum vier FlowLayouts untereinander hat, welche jeweils eine Checkbox und einen Text nebeneinander haben. Diese FlowLayouts sollen linksbündig sein. Das ist mein Code, welcher den Westen des BorderLayouts füllt:
JPanel pAntworten = new JPanel(); pAntworten.setLayout(new BoxLayout(pAntworten, BoxLayout.Y_AXIS)); JPanel pAntwort[] = new JPanel[anzAntworten]; for(int i = 0; i < anzAntworten; i++){ lAntwort[i] = new JLabel(antworten[i].getSymbol() + ": " + antworten[i].getText()); cbAntwort[i] = new JCheckBox(); pAntwort[i] = new JPanel(new FlowLayout()); pAntwort[i].setAlignmentX(Component.LEFT_ALIGNMENT); pAntwort[i].add(cbAntwort[i]); pAntwort[i].add(lAntwort[i]); pAntworten.add(pAntwort[i]); } content.add(pAntworten, BorderLayout.WEST);
Wie ihr seht habe ich schon versucht die einzelnen FlowLayouts linksbündig zu machen, das klappt aber nicht. Es sieht bei mir so aus:
http://img5.fotos-hochladen.net/uploads/quiz7yxvhstr5l.png
Weiß jemand was ich ändern muss?
Viele Grüße :) -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Was du auf jeden Fall tun kannst: die FlowLayouts durch weitere BorderLayouts o.ä. ersetzen, wo in West je eine Checkbox ist und in Center das Label. Problematisch wirds da allerdings, sobald nicht überall nur eine Checkbox drin ist.
Alternativ gab es mal bei den JDK-Beispielen ein »LabeledPairLayout«, mit dem du vermutlich genau das hinbekommst, oder spätestens nach kleinen Anpassungen … Code:import java.awt.*; import javax.swing.*; import java.util.*; public class LabeledPairLayout implements LayoutManager { Vector labels = new Vector(); Vector fields = new Vector(); int yGap = 2; int xGap = 2; public void addLayoutComponent(String s, Component c) { if (s.equals("label")) { labels.addElement(c); } else { fields.addElement(c); } } public void layoutContainer(Container c) { Insets insets = c.getInsets(); int labelWidth = 0; Enumeration labelIter = labels.elements(); while(labelIter.hasMoreElements()) { JComponent comp = (JComponent)labelIter.nextElement(); labelWidth = Math.max( labelWidth, comp.getPreferredSize().width ); } int yPos = insets.top; Enumeration fieldIter = fields.elements(); labelIter = labels.elements(); while(labelIter.hasMoreElements() && fieldIter.hasMoreElements()) { JComponent label = (JComponent)labelIter.nextElement(); JComponent field = (JComponent)fieldIter.nextElement(); int height = Math.max(label.getPreferredSize().height, field.getPreferredSize().height); label.setBounds( insets.left, yPos, labelWidth, height ); field.setBounds( insets.left + labelWidth + xGap, yPos, c.getSize().width - (labelWidth +xGap + insets.left + insets.right), height ); yPos += (height + yGap); } } public Dimension minimumLayoutSize(Container c) { Insets insets = c.getInsets(); int labelWidth = 0; Enumeration labelIter = labels.elements(); while(labelIter.hasMoreElements()) { JComponent comp = (JComponent)labelIter.nextElement(); labelWidth = Math.max( labelWidth, comp.getPreferredSize().width ); } int yPos = insets.top; labelIter = labels.elements(); Enumeration fieldIter = fields.elements(); while(labelIter.hasMoreElements() && fieldIter.hasMoreElements()) { JComponent label = (JComponent)labelIter.nextElement(); JComponent field = (JComponent)fieldIter.nextElement(); int height = Math.max(label.getPreferredSize().height, field.getPreferredSize().height); yPos += (height + yGap); } return new Dimension( labelWidth * 3 , yPos ); } public Dimension preferredLayoutSize(Container c) { Dimension d = minimumLayoutSize(c); d.width *= 2; return d; } public void removeLayoutComponent(Component c) {} }
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage