AWT choice mit viel Auswahl aktualisiert sich nicht korrekt beim scrollen?!

J

Java22122012

Gast
Moin,

folgendes Problem:
Ich habe 2 Choice Auswahlmenüs.
->wenn ich im ersten Menü etwas ändere, so soll sich das zweite Menü anpassen.
(also nur die Einträge beinhalten, die nach der Auswahl aus dem ersten Menü dorthin gehören).

Bsp (Pseudocode):
Choice1 : {A,B,C}
Choice2 : falls Choice1==A dann {A1,A2,A3}
==B dann {B1,B2,B3}
==C dann {C1,C2,C3}

Ich hoffe, man versteht was ich meine :)

Das alles ist auch kein Problem, einfach nen itemstatechanged Handler und entsprechend reagieren.

Jedoch gibt es folgendes Problem, wenn die Auswahl aus Choice2 sehr groß ist, sodass gescrollt werden muss:
->es wird nicht die korrekte Auswahl aus choice2 erkannt!

Hier ein einfacher Quellcode, der zum Verstehen gut geeignet ist:

Java:
import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.Choice;
import javax.swing.JTextField;
import java.awt.event.ItemListener;
import java.awt.event.ItemEvent;

public class choicetest extends JFrame {

	private JPanel contentPane;
	private JTextField textField;

	private Choice choice;
	private Choice choice_1;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					choicetest frame = new choicetest();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public choicetest() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);

		choice = new Choice();
		choice.addItemListener(new ItemListener() {
			public void itemStateChanged(ItemEvent arg0) {
				repaint(true);
			}
		});
		choice.setBounds(37, 53, 146, 20);
		contentPane.add(choice);

		choice_1 = new Choice();
		choice_1.addItemListener(new ItemListener() {
			public void itemStateChanged(ItemEvent e) {
				repaint(false);
			}
		});
		choice_1.setBounds(37, 87, 146, 20);
		contentPane.add(choice_1);

		textField = new JTextField();
		textField.setBounds(35, 135, 164, 37);
		contentPane.add(textField);
		textField.setColumns(10);
		choice.add("Bereich1");
		choice.add("Bereich2");
		choice.add("Bereich3");
		choice.add("Bereich4");
		
		repaint(true);

	}

	public void repaint(boolean r) {
		String alphabetString = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
		char[] alphabetArray = alphabetString.toCharArray();
		
		
		
		String text ="";
		if(r)
		{
			choice_1.removeAll();
		switch(choice.getSelectedIndex())
		{
			case 0:			
				for (int i = 0; i < alphabetArray.length; i++) {
					choice_1.add("Taste: " + alphabetArray[i]+"1");}
				break;
			case 1:			
				for (int i = 0; i < alphabetArray.length; i++) {
					choice_1.add("Taste: " + alphabetArray[i]+"2");}
				break;
			case 2:			
				for (int i = 0; i < alphabetArray.length; i++) {
					choice_1.add("Taste: " + alphabetArray[i]+"3");}
				break;
			case 3:			
				for (int i = 0; i < alphabetArray.length; i++) {
					choice_1.add("Taste: " + alphabetArray[i]+"4");}
				break;
		}
		}
		textField.setText(choice.getItem(choice.getSelectedIndex())+choice_1.getItem(choice_1.getSelectedIndex()));

	}
}

Das Problem:
->Bereich 1 ausgewählt lassen + in der zweiten Choice mit dem Mausrad bis zu den letzten Eintrag ("Taste Z1") scrollen, und mit linker Maustaste auswählen.
=> Im textfeld steht nun (korrekterweise) "Bereich1Taste: Z1"

->nun in der ersten Choice "Bereich 2" auswählen, und erneut mit dem Mausrad in der zweiten Choice bis zum letzten Eintrag (nun "Taste Z2") scrollen, und mit der linken Maustaste auswählen.
=> Im textfeld steht nun (nicht korrekt!) "Bereich2Taste: A2"

==>Warum?
Wenn ich mit den Pfeiltasten durch die Auswahl navigiere klappt es korrekt.
Jedoch nicht, wenn ich scrollen muss...

Wie kann ich dieses Problem umgehen?

Danke schonmal :)
 

Camill

Bekanntes Mitglied
Also ich erhalte das gewünschte Ergebnis, sehe keinen Fehler.
Habe jedoch noch einen Hinweis: Swing und AWT sollte man nicht "vermischen".
 
J

Java22122012

Gast
Komisch.

Sowohl bei mir auf zwei Rechnern, als auch bei 2 Bekannten tritt das Problem auf.
Ist jedes mal reproduzierbar :/
->Beim ersten mal Auswählen klappt es problemfrei.
Beim zweiten mal scheint es aus Choice2 nicht korrekt zu picken, und bleibt bei "TasteA" stecken...
(außer, wenn man alles mit Pfeiltasten+Tab durch switcht)...

Zu dem Mischen von awt und swing
->Vielleicht liegt es tatsächlich dadran?

Mit einer JComboBox läuft es problemfrei :)

Gibt es eine Möglichkeit, den Fade In Effekt der Choice auf die ComboBox zu übertragen?

danke schonmal :)
 

jgh

Top Contributor
einfacher wäre es sicherlich, auf die swing-komponenten zu verzichten und nur awt zu verwenden: frame anstelle von jframe, textfield anstelle ...etc
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P JavaFX aktuelle Tabellenzeile bei Choice-Box-Auswahl in Zelle ermitteln AWT, Swing, JavaFX & SWT 28
cezary Choice, JComboBox oder JList AWT, Swing, JavaFX & SWT 5
N Swing Choice- Problem! AWT, Swing, JavaFX & SWT 8
S Multiple Choice Test AWT, Swing, JavaFX & SWT 2
Q AWT Choice ein Zeichen hinzufügen AWT, Swing, JavaFX & SWT 4
N Java Choice Bilderausgabe - images - - image - AWT, Swing, JavaFX & SWT 2
L choice probleme AWT, Swing, JavaFX & SWT 9
T Choice "gezielt" darstellen aber wie - mit Koordinaten aber wie? AWT, Swing, JavaFX & SWT 6
F Probleme mit der GUI (Choice) AWT, Swing, JavaFX & SWT 3
H2SO3- choice mit mehrfarbigen einträgen AWT, Swing, JavaFX & SWT 4
I Choice erkennen AWT, Swing, JavaFX & SWT 3
S Choice editierbar machen? AWT, Swing, JavaFX & SWT 6
A Checkbox-Choice Eventproblem (CMV) AWT, Swing, JavaFX & SWT 2
K Choice auswahl und String in Int AWT, Swing, JavaFX & SWT 8
S Dringend: Choice -> PrintLn? AWT, Swing, JavaFX & SWT 11
O Choice/Combobox wird nur 1x aktualisiert AWT, Swing, JavaFX & SWT 3
B Zwei Choice-Menüs verknüpfen AWT, Swing, JavaFX & SWT 2
T Buttons auf Tablet viel kleiner als am PC AWT, Swing, JavaFX & SWT 0
E JavaFX Sehr viel und unterschiedlich Großen Inhalt auf einer "Fläche" ... Umsetzbar ? AWT, Swing, JavaFX & SWT 3
H Swing JScrollPane mit "viel Inhalt" scrollt zu langsam (inkl. See-For-Yourself.jar :D) AWT, Swing, JavaFX & SWT 2
G ImageIcon viel zu groß AWT, Swing, JavaFX & SWT 2
J viel paen mit JScrollPane AWT, Swing, JavaFX & SWT 2
S Öffnen eines JDialog über JMenuItem / Fenster zu viel. AWT, Swing, JavaFX & SWT 2
1 Warum sind JButtons viel breiter als der enthaltene Text ? AWT, Swing, JavaFX & SWT 4
K Textarea aktuallisiert sich nicht, nach Auswahl (Itemlistener) AWT, Swing, JavaFX & SWT 3
R Auswahl mehrerer JComboBoxen verknüpfne AWT, Swing, JavaFX & SWT 17
B Mit der ChoiceBox-Auswahl Textfelder hinzufügen AWT, Swing, JavaFX & SWT 18
S n aus m - Auswahl AWT, Swing, JavaFX & SWT 2
M Swing JList Auswahl-GUI-Konzept AWT, Swing, JavaFX & SWT 9
C JavaFX Inhalt eines SplitPane's durch Menü-Auswahl ändern? AWT, Swing, JavaFX & SWT 13
M Auswahl aus einer ListView AWT, Swing, JavaFX & SWT 3
F JavaFX ChoiceBox Name als Auswahl bei einer Objektliste AWT, Swing, JavaFX & SWT 4
G Swing ComboBox: Auswahl eines Items der Liste durch Eingabe eines Buchstabens AWT, Swing, JavaFX & SWT 3
M Combo Box auswahl in eine Datenbank speichern AWT, Swing, JavaFX & SWT 1
M JavaFX Combobox - Item Auswahl mit Tasten AWT, Swing, JavaFX & SWT 8
S JComboBox nach auswahl erneuern AWT, Swing, JavaFX & SWT 4
A Swing bei Auswahl und klick eines JComboBox buttons die Klasse eines anderen Projekts aufrufen AWT, Swing, JavaFX & SWT 3
T Importer-Auswahl im JFileChooser AWT, Swing, JavaFX & SWT 3
I Anhand ButtonGroup eine Auswahl treffen AWT, Swing, JavaFX & SWT 2
P Listener Auswahl Tabelle AWT, Swing, JavaFX & SWT 6
M JComboBox Item-Auswahl in JTable AWT, Swing, JavaFX & SWT 2
M SWT Wie mehr als 5000 Einträge zur Auswahl geben? AWT, Swing, JavaFX & SWT 9
G JComboBox mit CellRenderer (Auswahl) AWT, Swing, JavaFX & SWT 11
N automatische Auswahl einer JComboBox AWT, Swing, JavaFX & SWT 6
E JTree Auswahl AWT, Swing, JavaFX & SWT 2
P Swing Auswahl einer JComboBox für eine andere JComboBox übernehmen AWT, Swing, JavaFX & SWT 4
R JPanel wird erst neu gezeichnet nach erneuter auswahl AWT, Swing, JavaFX & SWT 8
F Swing Auf JComboBox-Event erst NACH Auswahl reagieren AWT, Swing, JavaFX & SWT 8
T Auswahl in GUI-Builder mit Grafiken ausstatten AWT, Swing, JavaFX & SWT 4
M Swing jList Auswahl löschen AWT, Swing, JavaFX & SWT 2
H JTree - nach Auswahl aus JFileChooser wird nur der erste Knoten angezeigt AWT, Swing, JavaFX & SWT 3
U JComboBox: (Vor)auswahl nach Aktualisierung AWT, Swing, JavaFX & SWT 2
Semox Swing JMenuItem-Auswahl mit Aktion ausführen AWT, Swing, JavaFX & SWT 4
C Welche Farbe hat die Auswahl in einer JTable? AWT, Swing, JavaFX & SWT 2
M SWT Wie Textfeld hinzufügen, nach Auswahl von einem bestimmten Combobox-item? AWT, Swing, JavaFX & SWT 3
S Swing JTable Auswahl mehrerer Zellen mit STRG+Maus AWT, Swing, JavaFX & SWT 3
P verschiedene JPanels einblenden je nach auswahl AWT, Swing, JavaFX & SWT 2
P Speichern und Auswahl gezeichneter Objekte AWT, Swing, JavaFX & SWT 7
K Auswahl einer ButtonGroup erfahren AWT, Swing, JavaFX & SWT 3
G JTextfield Inhalt markieren bei Auswahl AWT, Swing, JavaFX & SWT 2
H Auswahl in JComboBox abbrechen AWT, Swing, JavaFX & SWT 5
DEvent Standard Font-Auswahl-Dialog? AWT, Swing, JavaFX & SWT 15
DEvent Je nach Auswahl in Liste entsprechende Input-Elemente anzeig AWT, Swing, JavaFX & SWT 2
B Relative Pfadangaben beibehalten bei Auswahl in Dialog AWT, Swing, JavaFX & SWT 2
E JComboBox auswahl einschraenken AWT, Swing, JavaFX & SWT 5
G Screen nach Auswahl schließen und neuen öffnen?wie mach ichs AWT, Swing, JavaFX & SWT 8
M JTable mit JCombobox eigene Auswahl pro Zeile ? AWT, Swing, JavaFX & SWT 3
M Farb/bild auswahl AWT, Swing, JavaFX & SWT 15
C Aktion nach Auswahl einer Checkbox AWT, Swing, JavaFX & SWT 6
R Verzeichnis-Auswahl mit FileDialog ? AWT, Swing, JavaFX & SWT 3
G JComboBox nimmt Auswahl nicht an AWT, Swing, JavaFX & SWT 5
N JList: Auswahl erzwingen AWT, Swing, JavaFX & SWT 6
H Doppelte Auswahl bei ItemEvent für eine Dropdownliste AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben