JCheckBox Anregungen

yannig7

Grünschnabel
Hey Leute

Ich hab ein kleines Problem. Ich hab ein JPanel in dem stehen viele JLabes und JCheckBox drin. wenn ich nun die checkBox auswähle und auf ein Button drücke, wird dieser entfernt. Soweit so gut . Das ganze ist variable steht also in einer txt Datei drin. Nun kann ich aber immer nur eine Box auswählen und diese einzeln löschen.

Hier mal ein Einblick.

Code:
for (int i = 1; i < t; i++) {


            if (checkBox[i].isSelected() == true) {



                for (int l = 0; l < t; l++) {

                    zeile[l] = br.readLine();

                }


                kn = 0; // counter
                while (!zeile[kn].equals(label[i].getText())) {

                    f.write(zeile[kn] + "\n");
                    kn++;
                    System.out.println("test = " + zeile[kn].toString());
                }
                kn++;

                while (!zeile[kn].equals("#e")) {               // #e für ende
                    f.write(zeile[kn] + "\n");
                    kn++;
                }

            }

        }


        br.close();
        f.close();


        alteDatei.delete();
        neueDatei.renameTo(alteDatei);

    }

Habt ihr Tipps oder Anregungen wie ich es packen könnte, das ich mehrere auswählen kann und auch diese gelöscht werden?

Liebe grüße und Frohe Weihnachten.
 
Da die JCheckBoxes in einem Array gespeichert sind, ist es keine gute Idee diese zu löschen. Viemehr bietet es sich an, die JCheckBoxes unsichtbar zu machen, da diese über die Methode setVisible() verfügen. Ich habe auf die Schnelle ein kleines Testprogramm geschrieben, dass mehrere JCheckBoxes auf einmal unsichtbar macht. Hierzu müssen zuerst die CheckBox(en) aufgewählt und dann den Button "Delete" aktiviert werden.

Code:
package checkbox;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class CheckBoxTest extends JFrame implements ActionListener {

	private static final long serialVersionUID = 1L;
	private JCheckBox[] boxes;
	private JButton deleteB, exitB;
	private JPanel center, south;

	public void initPanel() {
		boxes = new JCheckBox[6];
		for (int i = 0; i < 6; i++) {
			boxes[i] = new JCheckBox("box" + i);
			center.add(boxes[i]);
		}
	}

	public CheckBoxTest() {
		center = new JPanel();
		south = new JPanel();
		deleteB = new JButton("Delete");
		exitB = new JButton("Exit");
		deleteB.addActionListener(this);
		exitB.addActionListener(this);
		south.add(deleteB);
		south.add(exitB);

		initPanel();
		getContentPane().add(center, BorderLayout.CENTER);
		getContentPane().add(south, BorderLayout.SOUTH);
	}

	public void actionPerformed(ActionEvent e) {
		String s = e.getActionCommand();
		if (s.equals("Delete")) {
			for (JCheckBox box : boxes) {
				if (box.isSelected() == true && box.isVisible()) {
					System.out.println(box.getActionCommand()
							+ " wurde unsichtbar gemacht");
					// nicht löschen, sondern unsichtbar machen
					box.setVisible(false);
				}
			}
		System.out.println("----------- Ende unsichtbar machen ----------");
		} else if (s.equals("Exit")) {
			System.exit(DISPOSE_ON_CLOSE);
		}
	}

	public static void main(String[] args) {
		CheckBoxTest cbt = new CheckBoxTest();
		cbt.setBounds(100, 100, 300, 400);
		cbt.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		cbt.setVisible(true);
	}
}
 
Zuletzt bearbeitet:
aber das ist ja in einer Liste untereinander und wenn ich die nur unsichtbar mach, rücken sie nicht auf außerdem geht das mit der Zeit ziemlich auf den Speicher. Mhh danke trotzdem für die Antwort. Hat noch jemand anderes Vorschläge?
 
Zurück