ComboBox(editable) - Text verändern

beastofchaos

Bekanntes Mitglied
Hallo Leute, ich arbeite seit längerer Zeit an einem Zeichenprogramm. Nun gibt es in einer Leiste eine ComboBox mit der die Stiftweite eingestellt werden kann. Aus gewissen Gründen, möchte ich, dass man nur maximal 500 einstellen kann. Das soll so aussehen, dass man z.B. 600 eingibt und er per FocusLost o.ä.* das ausliest und den Text auf 500 setzt. Hier mal nötiger Quelltext:

Java:
    private JComboBox comboWidth = new JComboBox();
...
        String[] choosable = {"1", "2", "3", "4", "5", "7", "10", "15", "30", "50", "75", "100"};
        comboWidth = new JComboBox(choosable);
        comboWidth.setEditable(true);
        ((JTextField)comboWidth.getEditor().getEditorComponent()).setColumns(2);
        comboWidth.addActionListener(this); 
        tempPanel.add(comboWidth);

In ActionPerformed() steht:
Java:
        else if (evt.getSource() == comboWidth) {
    		try {
    			int test = Integer.parseInt(comboWidth.getSelectedItem().toString());
    			main.paintPanel.penWidth = (test > 500) ? 500 : test;
    			((JTextField)comboWidth.getEditor().getEditorComponent()).setText(test+"");
    		}
    		catch (NumberFormatException exc) {
    			main.paintPanel.penWidth = 1;
    		}
    	}


Leider funktioniert dieses "setText()"(in Zeile 5) nicht - soll heißen, dass
ich im Debugger zwar 2 Variablen mit dem Wert "600" gefunden habe, aber die sich kein bisschen ändern.
Ich konnt sie finden unter "comboWidth-Editor-Editor-oldValue='600'" und "comboWidth.selectedItemReminder='600'"...


*Ich würde ja gerne so eine Art "OnChange"-Eregniss für den Text benutzen, aber den TextListener gibt es leider nicht für die ComboBox bzw. deren Textfield-Komponente gibt - jemand eine Idee? :)

Gruß, Thomas
 

Xanadoo

Mitglied
In Zeile 3 wird der Wert ja der Variable zugewiesen.
Diese Variable übergibst du in der Zeile 5 im setTest().

Die Prüfung und Begrenzung in der Zeile 4 hat aber auf diese Variable keinen Einfluss.
 

beastofchaos

Bekanntes Mitglied
<-- zu klug, um Leichtsinnigkeitsfehler zu sehen xD sorry^^

Da wäre aber immer noch das zweite Problem, dass es keine Art "TextListener" gibt. Im Moment kann man nur die Eingabe speichern, indem man "Enter" drückt oder etwas anderes anklickt...
 

damtre

Aktives Mitglied
Hi,

habe hier mittels eines KeyListeners eine Abfrage auf die Eingabe in der ComboBox gelegt.
Hoffe das kann dir schon mal weiterhelfen...
Wenn du fragen dazu hast, dann nur raus damit.

Hier der Code der Klasse:

Java:
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JComboBox;
import javax.swing.JFrame;

public class ComboValueChange extends JFrame implements KeyListener {

	JComboBox cBox;
	String eingabe = "";
	int value = 0;

	public ComboValueChange() {
		initGui();
		setVisible(true);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		pack();
	}

	public void initGui() {
		String[] choosable = { "1", "2", "3", "4", "5", "7", "10", "15", "30",
				"50", "75", "100" };
		cBox = new JComboBox(choosable);
		cBox.setEditable(true);
		cBox.getEditor().getEditorComponent().addKeyListener(this);
		eingabe = cBox.getSelectedItem().toString();
		add(cBox);
	}

	@Override
	public void keyPressed(KeyEvent arg0) {
		// TODO Auto-generated method stub
		if (!eingabe.equals("") && arg0.getKeyCode() == KeyEvent.VK_BACK_SPACE) {
			eingabe = eingabe.substring(0, eingabe.length() - 1);
		} else if (eingabe.equals("")
				&& arg0.getKeyCode() == KeyEvent.VK_BACK_SPACE) {
			// mache nichts, da das Textfeld nicht leerer werden kann...
		} else {
			char c = arg0.getKeyChar();
			eingabe += c;
			value = Integer.parseInt(eingabe);

			if (value > 500) {
				eingabe = "500";
				cBox.getEditor().setItem(eingabe.substring(0, 2));
			}
		}

	}

	@Override
	public void keyReleased(KeyEvent arg0) {
		// TODO Auto-generated method stub
	}

	@Override
	public void keyTyped(KeyEvent arg0) {
		// TODO Auto-generated method stub
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		new ComboValueChange();
	}
	
}

Grüße
 

beastofchaos

Bekanntes Mitglied
Ah, du hast einen Listener gemacht, der sich auf das Frame bezieht. Das heißt, dass er imemr, egal welches Feld den Focus hat, er da die Veränderungen macht, oder? Kann man sicher abfragen, indem man fragt, was den Focus hat, aber vll. könnte ich dann auch gleich so einen TextListener benutzen, weild er funktioniert schlielich auch für ein Frame, bloß gibts denn nicht speziell für eine ComboBox...
 

damtre

Aktives Mitglied
Du verstehst da glaube ich was falsch...

Listener sind Interfaces die du entweder mittels einem "implements" der Klasse hinzufügst oder du nutzt anonyme Klassen/Interfaces also quasi so:

Java:
deineKomponente.addKeyListener(new KeyListener() {
			
			@Override
			public void keyTyped(KeyEvent e) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void keyReleased(KeyEvent e) {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void keyPressed(KeyEvent e) {
				// TODO Auto-generated method stub
				
			}
		});

Der Listener, egal ob der anonym oder nicht ist, reagiert nur auf die Komponente auf die du den Listener auch "angemeldet" hast.
Also sprich: Du hast ein komponente.addIrgendEinListener(); verwendet... Dann reagiert auch NUR die komponente auf irgendwas.
 
Zuletzt bearbeitet:

beastofchaos

Bekanntes Mitglied
Ich kenn mich mit Listener aus, aber er hat das doch zum JFrame implementiert, bezieht sich das nicht dnan auf das JFrame als Komponente...

oh, das wäre der Fall, wenn man noch
Code:
addKeyListener(this);
schreiben würde - sorry ;)
 

damtre

Aktives Mitglied
Richtig... mit addIrgendEinListener(this) würdest du den KeyListener auf den Frame legen, aber in meinem Code verwende ich ja combobox.addKeyListener(this) und damit reagiert auch nur die combobox darauf...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Rxiiz Objekt aus ComboBox entfernen Java Basics - Anfänger-Themen 4
Mady Daten von JList & Combobox in JTable adden Java Basics - Anfänger-Themen 2
J Eintrag Combobox über einen String auswählen Java Basics - Anfänger-Themen 3
T ComboBox getValue() zeigt null Java Basics - Anfänger-Themen 7
J Array an Combobox übergeben Java Basics - Anfänger-Themen 5
P JavaFX: Verständnisproblem bei ComboBox/ChoiceBox etc. Java Basics - Anfänger-Themen 9
Rubberduck Combobox-Werte in GUI anzeigen Java Basics - Anfänger-Themen 13
J Combobox füllen mit Wertausgabe von andere Klasse Java Basics - Anfänger-Themen 3
D Custom Buttons oder Custom Combobox Java Basics - Anfänger-Themen 30
G Verlassen einer ComboBox erkennen Java Basics - Anfänger-Themen 16
Mosquera Get String Array - ComboBox Java Basics - Anfänger-Themen 10
H Combobox abhängig von RadioButton Java Basics - Anfänger-Themen 4
M ComboBox bestimmte Elemente disablen/ausgrauen Java Basics - Anfänger-Themen 3
T Combobox Wert auslesen und damit weiterrechnen Java Basics - Anfänger-Themen 6
J ComboBox mittels neuer Methode befüllen Java Basics - Anfänger-Themen 3
J Interface Combobox Zustand speichern Java Basics - Anfänger-Themen 1
T Wenn Schaltjahr ist, soll Februar, einen Tag mehr haben, GUI mit combobox Java Basics - Anfänger-Themen 4
J Combobox Objekte Java Basics - Anfänger-Themen 10
kaoZ Input/Output Verzeichnis Inhalt in combobox ausgeben Java Basics - Anfänger-Themen 8
V ComboBox Ergebnisse abhängig von anderer ComboBox - Wie? Java Basics - Anfänger-Themen 7
W Hilfe bei Combobox Java Basics - Anfänger-Themen 9
W GUI Label, ComboBox Java Basics - Anfänger-Themen 4
C Combobox in Abhängigkeit von Spinner Java Basics - Anfänger-Themen 6
D Wert von Combobox in Datei schreiben Java Basics - Anfänger-Themen 2
J Combobox in andere Klasse übergeben Java Basics - Anfänger-Themen 3
H String aus Combobox auslesen Java Basics - Anfänger-Themen 2
I ComboBox mit Icons + Mehr...! Java Basics - Anfänger-Themen 6
1 Combobox anzeige Java Basics - Anfänger-Themen 7
1 combobox nicht an fesnter angeknüpft Java Basics - Anfänger-Themen 2
1 ComboBox Java Basics - Anfänger-Themen 4
S ComboBox Spielautomat Java Basics - Anfänger-Themen 3
F ComboBox sowie String in einer JTable Spalte Java Basics - Anfänger-Themen 2
H Darstellung ComboBox in jTable Java Basics - Anfänger-Themen 5
M Combobox Problem Java Basics - Anfänger-Themen 3
D ArrayList<String> to Combobox Java Basics - Anfänger-Themen 7
Spin ComboBox Java Basics - Anfänger-Themen 4
J Taschenrechner Combobox Reaktion auf Auswahl Java Basics - Anfänger-Themen 2
M ComboBox und ActionListener Java Basics - Anfänger-Themen 3
S AWT ComboBox Ausgaba Java Basics - Anfänger-Themen 5
K rückgabewert combobox Java Basics - Anfänger-Themen 15
E ComboBox werte auslesen Java Basics - Anfänger-Themen 4
E Combobox Auswahl überprüfen Java Basics - Anfänger-Themen 7
B ComboBox Größe ändern Java Basics - Anfänger-Themen 4
D ComboBox Java Basics - Anfänger-Themen 10
N nicht editierbare combobox davon oberstes element auslesen? Java Basics - Anfänger-Themen 5
H combobox auf leeres Feld prüfen? Java Basics - Anfänger-Themen 10
F ComboBox im Vektor auslesen, Vektor<JComboBox> Java Basics - Anfänger-Themen 6
D ComboBox auf <empty> überprüfen Java Basics - Anfänger-Themen 2
P Item in ComboBox manuell hinzufügen? Java Basics - Anfänger-Themen 3
C Welche Elemente sind in der ComboBox? Java Basics - Anfänger-Themen 3
G Wie doppelte Einträge in ComboBox vermeiden ? Java Basics - Anfänger-Themen 9
P Wert aus JTree in ComboBox setzen? Java Basics - Anfänger-Themen 2
D Combobox mit array abhängig von anderer Combobox mit array Java Basics - Anfänger-Themen 4
R Symbolschrift in einer ComboBox! Java Basics - Anfänger-Themen 10
G itemlistener bei combobox? Java Basics - Anfänger-Themen 10
G ComboBox und Arrays Inhalt speichern/ausgeben Java Basics - Anfänger-Themen 7
G ComboBox mit identischen einträgen Java Basics - Anfänger-Themen 2
G ComboBox in eine JTable einbinden Java Basics - Anfänger-Themen 2
A Combobox Struts Java Java Basics - Anfänger-Themen 7
S Größe einer Combobox Java Basics - Anfänger-Themen 5
S Combobox mehrfach verwenden Java Basics - Anfänger-Themen 3
A ComboBox mit unique Werten Java Basics - Anfänger-Themen 2
T ComboBox.GetSelectedIndex() gibt immer nur 0 zurück. Java Basics - Anfänger-Themen 2
H ComboBox zur Laufzeit erzeugen? Fehler. Java Basics - Anfänger-Themen 8
S Combobox mit Icons Java Basics - Anfänger-Themen 3
D wieso ist die combobox nicht von anfang an aktiviert? Java Basics - Anfänger-Themen 4
L Aktual.problem einer Var. wenn ComboBox Element ausgewählt Java Basics - Anfänger-Themen 4
D ComboBox mit Daten einer Datenenbank Java Basics - Anfänger-Themen 8
A Combobox füllen Java Basics - Anfänger-Themen 4
C Combobox mit "History" Java Basics - Anfänger-Themen 3
W Mehrfacheinträge in ComboBox Java Basics - Anfänger-Themen 8
M String Array in ComboBox toString() Java Basics - Anfänger-Themen 2
M TextArea scrollbar bei editable false Java Basics - Anfänger-Themen 5
J Brauche Starthilfe für editable Tableview Java Basics - Anfänger-Themen 0
B JComboBox(editable) Java Basics - Anfänger-Themen 6
StrikeTom Editable JComboBox + enter Wie??? Java Basics - Anfänger-Themen 3
S jtable.editable(false) CODE? Java Basics - Anfänger-Themen 3
mwildam JComboBox FocusGained feuert nicht wenn editable Java Basics - Anfänger-Themen 4
M Textboxen lassen sich ändern obwohl editable = false Java Basics - Anfänger-Themen 8
richis-fragen JTable effektiv angezeigter Text ausgeben nicht Inhalt vom Model Java Basics - Anfänger-Themen 9
A Edit Text Negative Decimalzahlen Java Basics - Anfänger-Themen 18
P Aus Text Datei nur Zahlen übernehmen Java Basics - Anfänger-Themen 13
T Text einlesen code was kommt dahin? Java Basics - Anfänger-Themen 1
R Text in der DB abspeichern, und danach bearbeiten Java Basics - Anfänger-Themen 5
A JTextArea entfernen und durch neuen Text ersetzen Java Basics - Anfänger-Themen 8
JavaBeginner22 Button Text verändern Java Basics - Anfänger-Themen 1
GoenntHack Java Text von JLabel verändert sich nicht Java Basics - Anfänger-Themen 1
A Text zu Morsecode Java Basics - Anfänger-Themen 8
O Java Text Area Zeilenausgabe Java Basics - Anfänger-Themen 7
M Text wird in der Console nicht ausgegeben. Java Basics - Anfänger-Themen 11
berserkerdq2 An selbst ersteller txt Datei immer Text dranhängen, ohne den vorherign Text zu löschen Java Basics - Anfänger-Themen 8
M Text in Datei schreiben Java Basics - Anfänger-Themen 9
T208 Text Datei individuell benennen. Java Basics - Anfänger-Themen 5
A Werten aus dem Text ausliesten Java Basics - Anfänger-Themen 6
K Jlabel mit itemlistevent Text gegeben, wird nicht angezeigt Java Basics - Anfänger-Themen 5
Kiki01 Wie würde eine geeignete Schleife aussehen, die die relative Häufigkeit für jeden Charakter in einem Text bestimmt? Java Basics - Anfänger-Themen 3
O Text mit Regex trennen und wieder zusammenbauen Java Basics - Anfänger-Themen 5
xFlozen Text mehrspaltig ausgeben Java Basics - Anfänger-Themen 3
S Zufällige ungerade Zeile aus Text-Datei lesen Java Basics - Anfänger-Themen 5
K Rekursiver Vergleich von Textmuster und Text Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben