Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Es gibt ja in Swing eine Menge Layoutmanager, die alle ihre Vorzüge bieten. Da ich aber mit den meisten nicht sonderlich gut zurechtkomme, nutze ich meist GridBagLayout, da ich da (obwohl der Programmieraufwand etwas höher ist) einfach genau definieren kann, wie ich alle Komponenten angeordnet habe. Jetzt ist es aber so, dass ich ein JPanel habe (300x600) in das ich eine Liste an JButtons einfügen will:
Aber wenn ich das so mache, dann ist das keine richtige Liste, sondern das Panel wird in 8 Felder unterteilt und in jedem Feld ein Button eingefügt. Ich hätte jedoch gerne ein Panel, in dem die 8 Buttons in einer Liste kommen und dann der Rest des Panels leer ist. Natürlich könnte ich das jetzt über zusätzliche leere Labels, über das Ändern von ipady der letzten Komponente, etc. hinpfuschen, aber ich dachte ich frag euch mal, was denn hierfür der beste Layoutmanager bzw. der eleganteste Weg ist.
Danke euch schon mal im voraus und schönen Sonntag noch,
viele Grüße,
Du kannst auch recht einfach deine JRadioButtons in ein JPanel mit einem einspaltigen GridLayout (siehe FAQ) unterbringen und dieses Panel dann deinem Panel, welchem du den TitledBorder gegeben hast, hinzufügen.
Java:
import java.awt.*;
import javax.swing.*;
public class TutorialPanel extends JPanel {
public TutorialPanel() {
super(new BorderLayout());
setBorder(BorderFactory.createTitledBorder("Bitte Applet auswählen"));
setPreferredSize(new Dimension(300, 600));
JPanel buttonPanel = new JPanel(new GridLayout(0, 1));
ButtonGroup group = new ButtonGroup();
JRadioButton[] button = new JRadioButton[10];
for(int i = 0; i < button.length; i++) {
button[i] = new JRadioButton("Tutoraufgabe "+(i+1));
buttonPanel.add(button[i]);
group.add(button[i]);
}
group.setSelected(button[0].getModel(), true);
add(buttonPanel, BorderLayout.NORTH);
}
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch(Exception e) {
e.printStackTrace();
}
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame frame = new JFrame("Layout-DEMO");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new TutorialPanel());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}
wusste nicht, dass das geht und habe gerade 70 Buttons manuell eingegeben und mich geärgert wie blöd der code dann aussieht. Werd das gleich mal abändern