Swing JCheckBox setEditable(false)?

C

Camino

Gast
Hallo,

gibt es eine Möglichkeit, eine JCheckBbox so zu setzen, dass sie nicht mehr verändert werden kann? Ein einmal angezeigter Wert in der Box (Häkchen oder nicht - true oder false) soll nicht mehr durch Anklicken geändert werden können. Bei anderen Eingabekomponenten gibt es ja die Methode setEditable(boolean), bei der JCheckBox aber nicht. Ich möchte einfach nur den Wert in Form der JCheckBox angezeigt haben, es soll aber nicht wie bei der Methode setEnabled(false) aussehen.

Gruss
Camino
 

Simon_Flagg

Bekanntes Mitglied
das einzige, was mir auf die schnelle einfällt ist: registriere einen listener auf der checkbox und stell in dem dann immer setSelected() true oder false....
kommt mir nicht sehr schön vor...

lg
 
C

Camino

Gast
Ja, danke für den Tipp, so eine Lösung hatte ich vorhin auch schon gefunden. Dachte halt, es müsste eine noch einfachere Lösung geben. Da die JCheckBox ja von AbstractButton erbt, gibt es da auch eine Methode removeActionListener. Damit müsste ich vielleicht das Klick-Verhalten entfernen können. Als Parameter wird ein ActionListener erwartet. Keine Ahnung, wie ich den von der JCheckBox bekomme. Ich finde da nur die Methode getActionListeners(), welche mir aber ein ActionListener[] zurückliefert. Dann muss ich wohl mal schauen, wie ich das da hinkriege.
 
C

Camino

Gast
OK, da ich dieses Verhalten der Checkbox wohl mehrmals brauche, hab ich mir jetzt eine eigene Klasse (abgeleitet von JCheckBox) geschrieben:
Java:
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.JCheckBox;

public class FixedStateCheckBox
extends JCheckBox
implements ItemListener {
	
	private boolean state;

	public FixedStateCheckBox( String text ) {
		this.setText( text );
		this.addItemListener( this );
	}

	public void setFixedState( boolean state ) {
		this.state = state;	
		this.setSelected( state );
	}

	@Override
	public void itemStateChanged( ItemEvent e ) {
		this.setSelected( state );
	}

}

Dem Konstruktor übergebe ich den Text zur Beschriftung der Checkbox. Mit der Methode setFixedState(boolean) setze ich den gewünschten Wert. Möglich wäre, diesen Wert (Status) auch im Konstruktor zu übergeben, aber da ich den Status nachträglich ändere, hab ich das in eine Methode ausgelagert. Vielleicht fallen ja noch jemandem Fehler oder Verbesserungsmöglichkeiten auf.
 
C

Camino

Gast
Ja, danke für den Hinweis. Ich hatte aber oben erwähnt, dass ich nicht den Effekt wie bei setEnabled(false) haben möchte, also dass dann die JCheckBox (und der dazugehörige Text) deaktiviert, also ausgegraut bzw. verblasst ist. Ich wollte, dass die Checkbox ganz normal aussieht, nur nicht mehr geändert werden kann. Eben so etwas wie setEditable auch für JCheckBox...
 
Zuletzt bearbeitet von einem Moderator:

andiv

Bekanntes Mitglied
Wer lesen kann... Da hab ich ausgerechnet den wichtigsten Satz nur überflogen. Folgendes könnte funktionieren, ich hab es aber nicht ausprobiert:

Java:
JCheckBox cb = new JCheckBox("Klick mich");

// = setEditable(false)
List<ActionListener> listeners = new ArrayList<ActionListener>(cb.getActionListeners());
cb.getActionListeners().clear();

// = setEditable(true)
cb.getActionListeners().addAll(listeners);

Funktioniert aber nur falls getActionListeners keine Kopie zurückgibt und falls das Togglen ausschließlich über einen ActionListener gemacht wird.
 

andiv

Bekanntes Mitglied
Das kommt davon wenn man die API nicht gründlich genug liest *schäm*. In dem Fall muss man sich das Array zwischenspeichern, für jeden Listener darin removeActionListener aufrufen und später dann die Listener nochmal durchgehen und für jeden addActionListener aufrufen.

Java:
JCheckBox cb = new JCheckBox("Klick mich");
 
// = setEditable(false)
ActionListener[] listeners = cb.getActionListeners();
for(ActionListener al : listeners) {
    cb.removeActionListener(al);
}
 
// = setEditable(true)
for(ActionListener al : listeners) {
    cb.addActionListener(al);
}
 
Zuletzt bearbeitet:
C

Camino

Gast
OK, alles klar. Ich glaube, ich bleibe lieber bei meiner Lösung, die ich weiter oben beschrieben habe. Da klappt es, so wie ich es haben möchte. Trotzdem danke für deine Hilfe...

Gruss
Camino
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Falsches Rendern durch JCheckBox in eigenem JTree AWT, Swing, JavaFX & SWT 6
C JCheckBox disabled text color AWT, Swing, JavaFX & SWT 9
S JRadioButton und JCheckBox im JTree AWT, Swing, JavaFX & SWT 14
B JCheckBox ausrichten ? AWT, Swing, JavaFX & SWT 1
Paul15 JCheckBox und JToggleButton AWT, Swing, JavaFX & SWT 5
M Swing JCheckbox Namen vergeben? AWT, Swing, JavaFX & SWT 5
E Zustand der JCheckBox abfragen AWT, Swing, JavaFX & SWT 1
D JCheckbox und JSpinner in JTable AWT, Swing, JavaFX & SWT 9
K Swing JCheckbox ändern AWT, Swing, JavaFX & SWT 3
N ChangeListener und jCheckBox AWT, Swing, JavaFX & SWT 3
B JTable inkl. JCheckbox AWT, Swing, JavaFX & SWT 5
StrikeTom JCheckBox in JTable AWT, Swing, JavaFX & SWT 6
A Swing JCheckbox transparent machen AWT, Swing, JavaFX & SWT 7
G Swing JCheckBox, setEnabled(false) und HTML Text Problem AWT, Swing, JavaFX & SWT 5
Z Swing JCheckBox in einer JTable AWT, Swing, JavaFX & SWT 8
B JCheckbox ja oder nein AWT, Swing, JavaFX & SWT 3
O Jcheckbox Status nachträglich abfragen AWT, Swing, JavaFX & SWT 2
X Swing JCheckbox in JTable AWT, Swing, JavaFX & SWT 6
F DefaultTableCellRenderer blendet JCheckBox aus AWT, Swing, JavaFX & SWT 4
Burny91 Swing JCheckBox in JList einbetten AWT, Swing, JavaFX & SWT 4
K JCheckBox datenstruktur AWT, Swing, JavaFX & SWT 10
J Swing JCheckBox enabled, aber graues Kästchen AWT, Swing, JavaFX & SWT 2
S Swing Problem mit JCheckBox auf JPanel in JScrollPane AWT, Swing, JavaFX & SWT 8
C JCheckBox Kreuz statt Haken AWT, Swing, JavaFX & SWT 7
S Swing Werte einer Jcheckbox aus eine Klasse A in eine Klasse B aufrufen AWT, Swing, JavaFX & SWT 6
S GUI blocked after checked a JcheckBox AWT, Swing, JavaFX & SWT 2
S JCheckBox Paint AWT, Swing, JavaFX & SWT 7
M JCheckBox Icon anpassen AWT, Swing, JavaFX & SWT 2
E Matrix mit JCheckBox AWT, Swing, JavaFX & SWT 29
Balbes Änderung des Wertes von JCheckBox in einer JTable AWT, Swing, JavaFX & SWT 4
S Frage zu JCheckBox AWT, Swing, JavaFX & SWT 2
T Swing JCheckBox: Wie getState() abfragen? AWT, Swing, JavaFX & SWT 2
FoolMoon Swing JCheckBox neben Text in einer Tabelle AWT, Swing, JavaFX & SWT 2
J Icon einer JCheckBox AWT, Swing, JavaFX & SWT 6
E Swing Wechsel in JCheckBox abfangen AWT, Swing, JavaFX & SWT 10
S JCheckBox AWT, Swing, JavaFX & SWT 9
D JTable - JCheckbox und Renderer AWT, Swing, JavaFX & SWT 2
V JCheckBox in JTable AWT, Swing, JavaFX & SWT 3
T JCheckBox deselektieren (Haken wieder entfernen) - wie? AWT, Swing, JavaFX & SWT 5
W JRadioButton / JCheckBox problem AWT, Swing, JavaFX & SWT 6
K JCheckBox in einer JTable auswählbar machen AWT, Swing, JavaFX & SWT 2
J Listener erkennt Deselektierung von JCheckbox nicht AWT, Swing, JavaFX & SWT 13
T Dynamische Anpassung einer jCheckBox AWT, Swing, JavaFX & SWT 11
T JCheckBox ohne "Box"? AWT, Swing, JavaFX & SWT 6
H JCheckBox - Ist die Abfrage wirklich so umständlich ? AWT, Swing, JavaFX & SWT 3
A Problem der Größe von JCheckBox nach Hinzufügen eines Popups AWT, Swing, JavaFX & SWT 2
F Wie Item Listener zu JCheckBox(in JTable) hinzufügen? AWT, Swing, JavaFX & SWT 6
M JCheckbox, das selektieren verhindern AWT, Swing, JavaFX & SWT 9
M JCheckBox Standard MouseListener entfernen AWT, Swing, JavaFX & SWT 13
A JCheckBox abfragen AWT, Swing, JavaFX & SWT 6
J Variabler VariablenIdentifier - JCheckBox AWT, Swing, JavaFX & SWT 9
I JTree und JCheckbox Problem AWT, Swing, JavaFX & SWT 4
G jCheckBox AWT, Swing, JavaFX & SWT 8
G JMenu problem mit der Breite von einer JCheckBox AWT, Swing, JavaFX & SWT 2
D Seltsamer Rahmen bei JCheckBox AWT, Swing, JavaFX & SWT 7
G JCheckBox mit Text und Icon AWT, Swing, JavaFX & SWT 5
M JCheckbox in JCombobox AWT, Swing, JavaFX & SWT 7
L jCheckBox - aktiviert und nicht aktiviert AWT, Swing, JavaFX & SWT 7
H jCheckBox abschalten AWT, Swing, JavaFX & SWT 3
B JTextFiled, JCheckBox, JSpinner Eigenschaften speichern AWT, Swing, JavaFX & SWT 2
G JCheckbox Buttongroup Problem AWT, Swing, JavaFX & SWT 7
P JCheckBox: das 4eck mit kreuz soll rechts vom wort stehen AWT, Swing, JavaFX & SWT 3
R JCheckBox mit Image und Text AWT, Swing, JavaFX & SWT 5
G JCheckBox nicht änderbar machen AWT, Swing, JavaFX & SWT 2
V Statusabfrage von JCheckBox und JComboBox AWT, Swing, JavaFX & SWT 7
P JCheckBox AWT, Swing, JavaFX & SWT 4
L Probleme mit JCheckBox AWT, Swing, JavaFX & SWT 15
A JButton und JCheckBox im JTree reagieren nicht AWT, Swing, JavaFX & SWT 13
J JCheckBoxMenuItem und JCheckBox synchronisieren AWT, Swing, JavaFX & SWT 6
D Welche JCheckBox des Arrays ist das? AWT, Swing, JavaFX & SWT 2
P JCheckbox einmal gewählt immer gewählt ? AWT, Swing, JavaFX & SWT 2
M Weiße JCheckBox? AWT, Swing, JavaFX & SWT 5
S Herausbekommen welche JCheckBox selectiert wurde AWT, Swing, JavaFX & SWT 6
F JCombobox zwischen setEditable true und false switchen AWT, Swing, JavaFX & SWT 2
T FocusTraversalPolicy und setEditable(true) AWT, Swing, JavaFX & SWT 3
S JTable - clearSelection() + setEditable(false) AWT, Swing, JavaFX & SWT 5
F JComboBox setEditable( true ) auf Tastatur Events reagieren AWT, Swing, JavaFX & SWT 4
H JList.setEnabled(false) - Text soll nicht grau sein AWT, Swing, JavaFX & SWT 2
_user_q Objekt.setSelected(false), wenn es nicht mehr fokussiert wird AWT, Swing, JavaFX & SWT 2
_user_q ThreadPool schedule Wert auf false setzen AWT, Swing, JavaFX & SWT 1
L LookAndFeel JInternalFrame aussehen isSelected() true vs false AWT, Swing, JavaFX & SWT 0
M Swing "Frame.setResizable(false);" verschiebt Content? AWT, Swing, JavaFX & SWT 9
F AWT requestFocusInWindow returns false on ubuntu AWT, Swing, JavaFX & SWT 0
P jframe setVisible(false) wieder sichtbar machen? AWT, Swing, JavaFX & SWT 4
H Swing Keine Rückmeldung (freeze) bei setVisible(false) oder dispose() AWT, Swing, JavaFX & SWT 4
J Swing JMenuItem auf setEnabled(false) setzen? AWT, Swing, JavaFX & SWT 3
K 2D-Grafik interstectsLine gibt immer false zurück AWT, Swing, JavaFX & SWT 18
Oliver530 JButton setEnabled(false) ohne Farbverlust AWT, Swing, JavaFX & SWT 3
0 JTextPane copy/paste trotz editable(false) ? AWT, Swing, JavaFX & SWT 10
R Button soll nach dem er gedrückt wurde auf setVisible(false) gestellt werden. AWT, Swing, JavaFX & SWT 3
R Swing jbutton.setEnabled(false) ohne Ausgrauung des Buttons? AWT, Swing, JavaFX & SWT 6
M JTable, editCellAt liefert false AWT, Swing, JavaFX & SWT 4
D setEnabled(false); Problem AWT, Swing, JavaFX & SWT 25
jemandzehage setResizable(false) ändert Größe des Contentpane AWT, Swing, JavaFX & SWT 4
R Swing JDialog liefert immer false, 2 JListen verknüpfen AWT, Swing, JavaFX & SWT 3
L Swing setVisible(false) bei GridBagLayout - wie Layoutverschiebung verhindern? AWT, Swing, JavaFX & SWT 2
D CTabFolder.setSimple(false) AWT, Swing, JavaFX & SWT 8
P JPanel: setOpaque(false) funktioniert nicht AWT, Swing, JavaFX & SWT 27
O JPanel.setEnabled(false); auf Kindelemente funzt net? AWT, Swing, JavaFX & SWT 6
DeeDee0815 JEditorPane + HTML + <img src=file> + JAR = FALSE AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben