vendredi 29 mai 2015

Swing Im JPanel wird nur TextArea gelöscht

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!


Swing Im JPanel wird nur TextArea gelöscht

0 commentaires:

Enregistrer un commentaire