Hallo,
Ich sitze gerade etwas auf dem Schlauch. Ich soll für eine Aufgabe zur Laufzeit das Layout eines Panels ändern. Anhand von Radiobuttons soll das gewünschte Layout gewählt werden. Die Methoden setLayout und revalidate sind mir bekannt. Mir fehlt der Ansatz wie ich in meiner inneren Klasse auf das Panel panelLayout zugreifen soll um das Layout zu ändern.
Mein bisheriger Fortschritt:
Danke sehr,
Gruß,
Megara
Ich sitze gerade etwas auf dem Schlauch. Ich soll für eine Aufgabe zur Laufzeit das Layout eines Panels ändern. Anhand von Radiobuttons soll das gewünschte Layout gewählt werden. Die Methoden setLayout und revalidate sind mir bekannt. Mir fehlt der Ansatz wie ich in meiner inneren Klasse auf das Panel panelLayout zugreifen soll um das Layout zu ändern.
Mein bisheriger Fortschritt:
Code:
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.border.TitledBorder;
public class LayoutChangeGUI extends JFrame{
//automatisch über Eclipse eingefügt
private static final long serialVersionUID = 8880690754380988135L;
private JRadioButton flowLayout, boxLayout, borderLayout, gridLayout;
private String layout;
public class RadioButtonListener implements ItemListener {
@Override
public void itemStateChanged(ItemEvent e) {
Object ausloeser = e.getSource();
if(ausloeser instanceof JRadioButton){
if(flowLayout.isSelected())
//layout = "FlowLayout";
System.out.println("FlowLayout");
if(boxLayout.isSelected())
//layout = "BoxLayout";
System.out.println("BoxLayout");
if(borderLayout.isSelected())
//layout = "BorderLayout";
System.out.println("BorderLayout");
if(gridLayout.isSelected())
//layout = "GridLayout";
System.out.println("GridLayout");
}
}
}
public LayoutChangeGUI(String titel) {
super(titel);
JPanel panelOption, panelLayout;
panelOption = panelOptionErzeugen();
panelLayout = panelLayoutErzeugen();
add(panelOption, BorderLayout.WEST);
add(panelLayout, BorderLayout.EAST);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setVisible(true);
setResizable(false);
}
private JPanel panelLayoutErzeugen() {
JPanel tempPanel = new JPanel();
JButton b1 = new JButton("Hallo");
JButton b2 = new JButton("Welt");
JButton b3 = new JButton("und");
JButton b4 = new JButton("liebe");
JButton b5 = new JButton("Menschen");
// setPanelLayout(1);
tempPanel.add(b1);
tempPanel.add(b2);
tempPanel.add(b3);
tempPanel.add(b4);
tempPanel.add(b5);
tempPanel.setBorder(new TitledBorder("Layout: " + layout));
return tempPanel;
}
// private void setPanelLayout(int auswahl) {
//
// switch(auswahl){
// case 1:
// System.out.println("FlowLayout");
// break;
// case 2:
// System.out.println("BoxLayout");
// break;
// case 3:
// System.out.println("BorderLayout");
// break;
// case 4:
// System.out.println("GridLayout");
// break;
// }
// }
private JPanel panelOptionErzeugen() {
JPanel tempPanel = new JPanel();
flowLayout = new JRadioButton("FlowLayout");
boxLayout = new JRadioButton("BoxLayout");
borderLayout = new JRadioButton("BorderLayout");
gridLayout = new JRadioButton("GridLayout");
ButtonGroup gruppe = new ButtonGroup();
gruppe.add(flowLayout);
gruppe.add(boxLayout);
gruppe.add(borderLayout);
gruppe.add(gridLayout);
flowLayout.setSelected(true);
RadioButtonListener meinListener = new RadioButtonListener();
flowLayout.addItemListener(meinListener);
boxLayout.addItemListener(meinListener);
borderLayout.addItemListener(meinListener);
gridLayout.addItemListener(meinListener);
tempPanel.setLayout(new GridLayout(0,1));
tempPanel.add(flowLayout);
tempPanel.add(boxLayout);
tempPanel.add(borderLayout);
tempPanel.add(gridLayout);
tempPanel.setBorder(new TitledBorder("Layoutauswahl: "));
return tempPanel;
}
}
Danke sehr,
Gruß,
Megara