Checkbox

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
morgen ich habe hier ein problem mit der Checkbox und zwar wenn ich das häcken rausnehmen will dann soll er es auch aus dem TextArea löschen doch wie sag ich das er den Text im TextArea suchen soll???

hier mal der Code:
Code:
package Tests;

import javax.swing.*;

import sun.misc.Cleaner;

import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

public class Checkboxen extends JFrame implements ItemListener {
	private final JTextArea ta = new JTextArea();
	private static final String[] WDAYS = { "Montag", "Dienstag", "Mittwoch",
			"Donnerstag", "Freitag", "Samstag", "Sonntag" };

	public Checkboxen() {
		super();
		for (int i = 0; i < 7; ++i) {
			JCheckBox cb = new JCheckBox(WDAYS[i]);
			cb.setBounds(10, i * 20, 100, 25);
			cb.addItemListener(this);
			add(cb);
		}
		
		ta.setBounds(150, 10, 80, 150);
		ta.setEditable(false);
		add(ta);			
		
	}

	public void prüfen(ItemEvent e) {
		JCheckBox cb = (JCheckBox) e.getSource();
		if (cb.isSelected()) {
			ta.setText(ta.getText()+cb.getText()+"\n");
		
		} else {
			System.out.println(cb.getText() + " ist nicht aktiviert!");

		}
	}

	public void itemStateChanged(ItemEvent e) {
		JCheckBox cb = (JCheckBox) e.getSource();
		if (cb.isSelected()) {
			prüfen(e);
		} else if (!cb.isSelected()) {
			prüfen(e);
		}
	}

	public static void main(String[] args) {
		Checkboxen intro = new Checkboxen();
		intro.setBounds(350, 350, 400, 400);
		intro.setLayout(null);
		intro.setVisible(true);

	}
}
 
du hast also ein Problem, welches nichts mit Checkbox oder TextAreas zu tun hat,
sondern einfach nur mit der Suche in Strings und Löschen in Strings?

hier mal ein geeignetes Testprogramm:
Code:
class Test
{
    public static void main(String args[])
        throws Exception
    {
        String a = "Hello World.";
        String b = "World";
        String c = a.replace(b, "");
        System.out.println(c);
    }
}
so, nachdem aller Balast abgeladen ist kann man versuchen, mit dem Nachdenken anzufangen,
gib doch mal ein Beispiel, was in der TextArea drinsteht, was für Randbedingungen zu beachten sind (andere ähnliche Texte, Formatierungen, Zeilenumbrüche) usw.

im einfachsten Falle gehts wie angegeben
 
vielen dank das hab ich nun hinbekommen 🙂 jedoch nun hab ich den fehler das die gelöschten felder als leere zeilen angegeben werden 🙁
 
lösche nicht cb.getText() sondern cb.getText()+"\n",
denn du fügst ja vorher auch cb.getText()+"\n" hinzu
 
dank dir hab genau das +"\n" vergessen 😳 dennoch nochmal vielen dank
 
noch eine letzte frage für heute wie kann ich sagen das ich alle häckchenraus haben will?
weil cb.setselected(false) geht nicht
 
was heißt denn geht nicht?
Kompilerfehler wegen deines Tippfehlers oder keine Reaktion im Programm?

bei mir gehts:

Code:
public class TestGUI
    extends JFrame
{

    public TestGUI()
        throws Exception
    {

        setLayout(new FlowLayout());
        JCheckBox a = new JCheckBox("a");
        add(a);
        a.setSelected(true);
        
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(800, 400);
        setVisible(true);

        Thread.sleep(2000); // 2 Sekunden
        a.setSelected(false);

    }

    public static void main(String[] args)
        throws Exception
    {
        new TestGUI();
    }
}
 
nein ich möchte per button alle häckchen raus nehmen lassen die tabelle ist ja schon leer aber nun sollen auch alle häckchen raus:

Code:
package Tests;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class Checkboxen extends JFrame implements ItemListener, ActionListener {
	private final JTextArea ta = new JTextArea();
	JButton button , button1;
	private static final String[] WDAYS = { "Montag", "Dienstag", "Mittwoch",
			"Donnerstag", "Freitag", "Samstag", "Sonntag" };

	public Checkboxen() {
		super();
		for (int i = 0; i < 7; ++i) {
			JCheckBox cb = new JCheckBox(WDAYS[i]);
			cb.setBounds(10, i * 20, 100, 25);
			cb.addItemListener(this);
			add(cb);
			addWindowListener(new WindowAdapter() {
				public void windowClosing(WindowEvent event) {
					System.exit(0);
				}
			});
		}

		ta.setBounds(150, 10, 80, 115);
		ta.setEditable(false);
		add(ta);
		button = new JButton("Einfügen");
		button.setBounds(50, 175, 25, 25);
		button.addActionListener(this);
		add(button);
		
		button1 = new JButton("Alles Löschen");
		button1.setBounds(175,175,25,25);
		button1.addActionListener(this);
		add(button1);
	}

	public void actionPerformed(ActionEvent event) {
		String cmd = event.getActionCommand();
		if (cmd.equals("Einfügen")){
			System.out.println(ta.getText());
			}
		if (cmd.equals("Alles Löschen")){
			ta.setText("");
			cb.setSelected(false);
			System.out.println("Alle Dateien wurden gelöscht!");
		}
	}

	public void prüfen(ItemEvent e) {
		JCheckBox cb = (JCheckBox) e.getSource();
		if (cb.isSelected()) {
			ta.setText(ta.getText() + cb.getText() + "\n");

		} else if (!cb.isSelected()) {
			System.out.println("Es wurde der " + cb.getText() + " deaktiviert!");
			ta.setText(ta.getText().replaceFirst(cb.getText() + "\n", ""));
		}
	}

	public void itemStateChanged(ItemEvent e) {
		JCheckBox cb = (JCheckBox) e.getSource();
		if (cb.isSelected()) {
			prüfen(e);
		} else if (!cb.isSelected()) {
			prüfen(e);
		}
	}

	public static void main(String[] args) {
		Checkboxen intro = new Checkboxen();
		intro.setBounds(350, 350, 250, 250);
		intro.setLayout(null);
		intro.setVisible(true);
	}
}
 
da wo
cb.setSelected(false);
bei dir steht, da ist doch nirgendwo eine lokale Variable cb definiert??
welche soll es denn sein oder alle 7?
die musst du irgendwo als Exemplarvariable speichern, so wie button + button1,
idealerweise in einem Array
 
ja alle 7, aber ich hab dochdie Exemplarvariablen gespeichert in dem String Array oder nicht?
 
wenn dir ein String hilft, dann ruf doch am String setSelected(false) auf,
meiner Meinung nach hat das aber nur geringe Erfolgsaussichten 😉
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben