vendredi 29 mai 2015
Swing Im JPanel wird nur TextArea gelöscht
Posted on 11:53 by verona
Mein Status Anfänger!
In meinem Code erzeuge ich mindesten zwei JPanel mit einem TextArea, JLabel und einer Checkbox.
Per Button kann ich dann weitere JPanels hinzufügen, die dann unterhalb angezeigt werden.
Klappt soweit.
Wenn ich aber dann das letzte neu erzeugte JPanel löschen will, dann wird nur das TextArea gelöscht.
Alles andere bleibt.
Ich finde einfach den Fehler nicht.
Hier der Code:
public class EingabeAntworten {
Integer counter = 0;
public static void main(String[] args) {
EingabeAntworten ea = new EingabeAntworten();
ea.aufruf();
}
public void aufruf() {
int x = 0, y = 0;
final int width = 600, height = 500;
Toolkit t = Toolkit.getDefaultToolkit();
Dimension d = t.getScreenSize();
x = (int) ((d.getWidth() - width) / 2);
y = (int) ((d.getHeight() - height) / 2);
final JFrame mainFenster = new JFrame("Antworten eingeben");
mainFenster.setBounds(x, y, width, height);
mainFenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final Panel panelAntworten = new Panel();
panelAntworten
.setLayout(new BoxLayout(panelAntworten, BoxLayout.Y_AXIS));
panelAntworten.add(zeileAntwortPanel());
panelAntworten.add(zeileAntwortPanel());
JButton btAnwortZufuegen = new JButton("Antwort hinzufügen");
JButton btAnwortLoeschen = new JButton("Antwort löschen");
JPanel panelButton = new JPanel();
panelButton.setLayout(new FlowLayout());
panelButton.add(btAnwortZufuegen);
panelButton.add(btAnwortLoeschen);
final JPanel mainPanel = new JPanel();
mainPanel.setLayout(new BorderLayout());
mainPanel.add(panelAntworten, BorderLayout.CENTER);
mainPanel.add(panelButton, BorderLayout.SOUTH);
mainFenster.add(mainPanel);
mainFenster.setVisible(true);
btAnwortLoeschen.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
if (counter > 2) {
panelAntworten.remove(panelAntworten
.getComponent(panelAntworten.getComponentCount() - 1));
// panelAntworten.remove(panelAntworten.getComponent(2));
counter--;
mainFenster.validate();
}
}
});
btAnwortZufuegen.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
panelAntworten.add(zeileAntwortPanel());
mainFenster.validate();
}
});
}
public JPanel zeileAntwortPanel() {
counter++;
JLabel zaehlerLabel = new JLabel(counter + ".)");
TextArea antwort = new TextArea();
antwort.setPreferredSize(new Dimension(500, 36));
antwort.setMaximumSize(new Dimension(500, 36));
JCheckBox checkBoxAntwort = new JCheckBox();
JPanel antwortZeilePanel = new JPanel();
antwortZeilePanel.add(zaehlerLabel);
antwortZeilePanel.add(antwort);
antwortZeilePanel.add(checkBoxAntwort);
antwortZeilePanel
.setBorder(BorderFactory.createLineBorder(Color.black));
antwortZeilePanel.setPreferredSize(new Dimension(595, 50));
antwortZeilePanel.setMaximumSize(new Dimension(595, 50));
return antwortZeilePanel;
}
}
Ich brauche eure Hilfe! Danke!
In meinem Code erzeuge ich mindesten zwei JPanel mit einem TextArea, JLabel und einer Checkbox.
Per Button kann ich dann weitere JPanels hinzufügen, die dann unterhalb angezeigt werden.
Klappt soweit.
Wenn ich aber dann das letzte neu erzeugte JPanel löschen will, dann wird nur das TextArea gelöscht.
Alles andere bleibt.
Ich finde einfach den Fehler nicht.
Hier der Code:
public class EingabeAntworten {
Integer counter = 0;
public static void main(String[] args) {
EingabeAntworten ea = new EingabeAntworten();
ea.aufruf();
}
public void aufruf() {
int x = 0, y = 0;
final int width = 600, height = 500;
Toolkit t = Toolkit.getDefaultToolkit();
Dimension d = t.getScreenSize();
x = (int) ((d.getWidth() - width) / 2);
y = (int) ((d.getHeight() - height) / 2);
final JFrame mainFenster = new JFrame("Antworten eingeben");
mainFenster.setBounds(x, y, width, height);
mainFenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final Panel panelAntworten = new Panel();
panelAntworten
.setLayout(new BoxLayout(panelAntworten, BoxLayout.Y_AXIS));
panelAntworten.add(zeileAntwortPanel());
panelAntworten.add(zeileAntwortPanel());
JButton btAnwortZufuegen = new JButton("Antwort hinzufügen");
JButton btAnwortLoeschen = new JButton("Antwort löschen");
JPanel panelButton = new JPanel();
panelButton.setLayout(new FlowLayout());
panelButton.add(btAnwortZufuegen);
panelButton.add(btAnwortLoeschen);
final JPanel mainPanel = new JPanel();
mainPanel.setLayout(new BorderLayout());
mainPanel.add(panelAntworten, BorderLayout.CENTER);
mainPanel.add(panelButton, BorderLayout.SOUTH);
mainFenster.add(mainPanel);
mainFenster.setVisible(true);
btAnwortLoeschen.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
if (counter > 2) {
panelAntworten.remove(panelAntworten
.getComponent(panelAntworten.getComponentCount() - 1));
// panelAntworten.remove(panelAntworten.getComponent(2));
counter--;
mainFenster.validate();
}
}
});
btAnwortZufuegen.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
panelAntworten.add(zeileAntwortPanel());
mainFenster.validate();
}
});
}
public JPanel zeileAntwortPanel() {
counter++;
JLabel zaehlerLabel = new JLabel(counter + ".)");
TextArea antwort = new TextArea();
antwort.setPreferredSize(new Dimension(500, 36));
antwort.setMaximumSize(new Dimension(500, 36));
JCheckBox checkBoxAntwort = new JCheckBox();
JPanel antwortZeilePanel = new JPanel();
antwortZeilePanel.add(zaehlerLabel);
antwortZeilePanel.add(antwort);
antwortZeilePanel.add(checkBoxAntwort);
antwortZeilePanel
.setBorder(BorderFactory.createLineBorder(Color.black));
antwortZeilePanel.setPreferredSize(new Dimension(595, 50));
antwortZeilePanel.setMaximumSize(new Dimension(595, 50));
return antwortZeilePanel;
}
}
Ich brauche eure Hilfe! Danke!
Swing Im JPanel wird nur TextArea gelöscht
Categories: Swing Im JPanel wird nur TextArea gelöscht
Inscription à :
Publier les commentaires (Atom)
0 commentaires:
Enregistrer un commentaire