Hi habe leider ein Problem, da ich mich mit den Layoutmanagern nicht gut auskenne bzw.
wie ich einem Panel ein neues Layout zuweisen kann.
Einen Listener zum reagieren auf die JRadiobuttons habe ich bereits.
Möchte jetzt nur mein innenliegendes Panel(mit den Buttons) ändern.
GridLayout mit 4 verschiedenen Einstellungen. 6 / 3 / 2 / 1 in der Reihe.
Standard ist beim Start ja 6 Stück in folge.
Hier der Code ,hilfe wäre echt nett verzweifle langsam ;(
[Java]
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
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 LayoutGUI extends JFrame{
//automatisch über Eclipse erzeugt
private static final long serialVersionUID = 6962138456296124598L;
//für das Layout zu wählen
//die ButtonGroup
private ButtonGroup aktionsgruppe;
//für die RadioButtons
private JRadioButton layouteins, layoutzwei,layoutdrei,layoutvier;
//für die Bestellung und das Beenden
private JButton beenden,eins,zwei,drei,vier,fünf,sechs;
//für die innenliegenden Container
private JPanel panelbuttons, panelradiobuttons, panelschaltflaechebeenden;
//die innere Klasse für die Listener
class MeinListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
if (layouteins.isSelected()){
System.out.println("1");
}
if (layoutzwei.isSelected()){
System.out.println("2");
}
if (layoutdrei.isSelected()){
System.out.println("3");
}
if (layoutvier.isSelected()){
System.out.println("4");
}
if (e.getActionCommand().equals("Beenden")){
System.exit(0);
}
}
}
//der Konstruktor
public LayoutGUI(String titel) {
super(titel);
//ein neues Panel erzeugen und die vier Radiobuttons in das Panel setzen
panelradiobuttons = new JPanel();
//die 4 RadioButtons erzeugen
layouteins = new JRadioButton("Layout 1");
layoutzwei = new JRadioButton("Layout 2");
layoutdrei = new JRadioButton("Layout 3");
layoutvier = new JRadioButton("Layout 4");
// Radiobuttons zum Panel hinzufügen
panelradiobuttons.add(layouteins);
panelradiobuttons.add(layoutzwei);
panelradiobuttons.add(layoutdrei);
panelradiobuttons.add(layoutvier);
//das Panel bekommt einen Rahmen mit Titel
panelradiobuttons.setBorder(new TitledBorder("Layout wählen:"));
//die ButtonGroup erzeugen
aktionsgruppe = new ButtonGroup();
//als Standard ist das layouteins ausgewählt
layouteins.setSelected(true);
//zur Gruppe hinzufügen
aktionsgruppe.add(layouteins);
aktionsgruppe.add(layoutzwei);
aktionsgruppe.add(layoutdrei);
aktionsgruppe.add(layoutvier);
//jetzt werden auch die RadioButtons in ein eigenes Panel gesetzt
//das geht ebenfalls nicht für die Gruppe
panelbuttons = new JPanel();
eins = new JButton("eins");
zwei = new JButton("zwei");
drei = new JButton("drei");
vier = new JButton("vier");
fünf = new JButton("fünf");
sechs = new JButton("sechs");
panelbuttons.add(eins);
panelbuttons.add(zwei);
panelbuttons.add(drei);
panelbuttons.add(vier);
panelbuttons.add(fünf);
panelbuttons.add(sechs);
//und auch dieses Panel bekommt einen Rahmen mit Titel
panelbuttons.setBorder(new TitledBorder("Layoutpanel"));
//die Schaltfläche
beenden = new JButton("Beenden");
//ein Gridlayout mit 2 Spalten und etwas Abstand
//das Layout gilt jetzt nur für den "äußeren" Container
setLayout(new GridLayout(3,2,10,10));
//die Komponenten hinzufügen
//nach links oben kommt das erste Panel
add(panelradiobuttons);
//daneben das zweite Panel
add(panelbuttons);
//die Schaltflächen werden jetzt ebenfalls in Panels gesetzt
panelschaltflaechebeenden = new JPanel();
panelschaltflaechebeenden.add(beenden);
panelschaltflaechebeenden.setBorder(new TitledBorder("Beenden Panel:"));
//die Panels für die Schaltflächen einfügen
add(panelschaltflaechebeenden);
//den Listener verbinden
MeinListener listener = new MeinListener();
beenden.addActionListener(listener);
layouteins.addActionListener(listener);
layoutzwei.addActionListener(listener);
layoutdrei.addActionListener(listener);
layoutvier.addActionListener(listener);
//die Standard-Aktion für das Schließen-Symbol setzen
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//das Fenster packen und anzeigen
pack();
setVisible(true);
}
}
[/code]
wie ich einem Panel ein neues Layout zuweisen kann.
Einen Listener zum reagieren auf die JRadiobuttons habe ich bereits.
Möchte jetzt nur mein innenliegendes Panel(mit den Buttons) ändern.
GridLayout mit 4 verschiedenen Einstellungen. 6 / 3 / 2 / 1 in der Reihe.
Standard ist beim Start ja 6 Stück in folge.
Hier der Code ,hilfe wäre echt nett verzweifle langsam ;(
[Java]
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
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 LayoutGUI extends JFrame{
//automatisch über Eclipse erzeugt
private static final long serialVersionUID = 6962138456296124598L;
//für das Layout zu wählen
//die ButtonGroup
private ButtonGroup aktionsgruppe;
//für die RadioButtons
private JRadioButton layouteins, layoutzwei,layoutdrei,layoutvier;
//für die Bestellung und das Beenden
private JButton beenden,eins,zwei,drei,vier,fünf,sechs;
//für die innenliegenden Container
private JPanel panelbuttons, panelradiobuttons, panelschaltflaechebeenden;
//die innere Klasse für die Listener
class MeinListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
if (layouteins.isSelected()){
System.out.println("1");
}
if (layoutzwei.isSelected()){
System.out.println("2");
}
if (layoutdrei.isSelected()){
System.out.println("3");
}
if (layoutvier.isSelected()){
System.out.println("4");
}
if (e.getActionCommand().equals("Beenden")){
System.exit(0);
}
}
}
//der Konstruktor
public LayoutGUI(String titel) {
super(titel);
//ein neues Panel erzeugen und die vier Radiobuttons in das Panel setzen
panelradiobuttons = new JPanel();
//die 4 RadioButtons erzeugen
layouteins = new JRadioButton("Layout 1");
layoutzwei = new JRadioButton("Layout 2");
layoutdrei = new JRadioButton("Layout 3");
layoutvier = new JRadioButton("Layout 4");
// Radiobuttons zum Panel hinzufügen
panelradiobuttons.add(layouteins);
panelradiobuttons.add(layoutzwei);
panelradiobuttons.add(layoutdrei);
panelradiobuttons.add(layoutvier);
//das Panel bekommt einen Rahmen mit Titel
panelradiobuttons.setBorder(new TitledBorder("Layout wählen:"));
//die ButtonGroup erzeugen
aktionsgruppe = new ButtonGroup();
//als Standard ist das layouteins ausgewählt
layouteins.setSelected(true);
//zur Gruppe hinzufügen
aktionsgruppe.add(layouteins);
aktionsgruppe.add(layoutzwei);
aktionsgruppe.add(layoutdrei);
aktionsgruppe.add(layoutvier);
//jetzt werden auch die RadioButtons in ein eigenes Panel gesetzt
//das geht ebenfalls nicht für die Gruppe
panelbuttons = new JPanel();
eins = new JButton("eins");
zwei = new JButton("zwei");
drei = new JButton("drei");
vier = new JButton("vier");
fünf = new JButton("fünf");
sechs = new JButton("sechs");
panelbuttons.add(eins);
panelbuttons.add(zwei);
panelbuttons.add(drei);
panelbuttons.add(vier);
panelbuttons.add(fünf);
panelbuttons.add(sechs);
//und auch dieses Panel bekommt einen Rahmen mit Titel
panelbuttons.setBorder(new TitledBorder("Layoutpanel"));
//die Schaltfläche
beenden = new JButton("Beenden");
//ein Gridlayout mit 2 Spalten und etwas Abstand
//das Layout gilt jetzt nur für den "äußeren" Container
setLayout(new GridLayout(3,2,10,10));
//die Komponenten hinzufügen
//nach links oben kommt das erste Panel
add(panelradiobuttons);
//daneben das zweite Panel
add(panelbuttons);
//die Schaltflächen werden jetzt ebenfalls in Panels gesetzt
panelschaltflaechebeenden = new JPanel();
panelschaltflaechebeenden.add(beenden);
panelschaltflaechebeenden.setBorder(new TitledBorder("Beenden Panel:"));
//die Panels für die Schaltflächen einfügen
add(panelschaltflaechebeenden);
//den Listener verbinden
MeinListener listener = new MeinListener();
beenden.addActionListener(listener);
layouteins.addActionListener(listener);
layoutzwei.addActionListener(listener);
layoutdrei.addActionListener(listener);
layoutvier.addActionListener(listener);
//die Standard-Aktion für das Schließen-Symbol setzen
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//das Fenster packen und anzeigen
pack();
setVisible(true);
}
}
[/code]