PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Java/Swing] Fokusmanagement funktioniert nicht so wie es sollte


Senior Sanchez
2005-05-15, 15:46:50
Hi,

so folgendes Problem: Die Taborder stimmt nicht so wie sie sollte. Normalerweise wird ja gesagt, dass das hinzufügen der Komponenten zum Container die Taborder bestimmt, aber das funktioniert in diesem Fall nicht, keine Ahnung warum:


usernameField.setPreferredSize(new Dimension(100, 21));
this.add(usernameField,
new GridBagConstraints(0, 1, 1, 1, 0, 0,
GridBagConstraints.CENTER,
GridBagConstraints.NONE,
new Insets(5, 0, 0, 10), 0, 0));

pwdField.setPreferredSize(new Dimension(100, 21));
this.add(pwdField,
new GridBagConstraints(0, 3, 1, 1, 0, 0,
GridBagConstraints.CENTER,
GridBagConstraints.NONE,
new Insets(5, 0, 0, 10), 0, 0));

channelField.setPreferredSize(new Dimension(100, 21));
this.add(channelField,
new GridBagConstraints(0, 5, 1, 1, 0, 0,
GridBagConstraints.CENTER,
GridBagConstraints.NONE,
new Insets(5, 0, 0, 10), 0, 0));

this.add(channelLabel,
new GridBagConstraints(0, 4, 1, 1, 0, 0, GridBagConstraints.WEST,
GridBagConstraints.NONE,
new Insets(10, 0, 0, 10), 0, 0));

this.add(pwdLabel,
new GridBagConstraints(0, 2, 1, 1, 0, 0, GridBagConstraints.WEST,
GridBagConstraints.NONE,
new Insets(10, 0, 0, 10), 0, 0));

channelList.addListSelectionListener(new javax.swing.event.
ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
String text = channelList.getSelectedText();

if(text != null) {
channelField.setText(channelList.getSelectedText());
}
}
});

pane = new JScrollPane(channelList);
pane.setPreferredSize(new Dimension(200, 140));
this.add(pane,
new GridBagConstraints(1, 1, 1, 5, 0, 0,
GridBagConstraints.CENTER,
GridBagConstraints.NONE,
new Insets(0, 20, 0, 0), 0, 0));


Eigentlich ist angedacht, dass der Fokus bei Tab-Betätigung vom Usernamefield zum pwdField springen sollte, aber er tut es nicht, sondern der Fokus springt zur JScrollPane mit der JList drin. Das dürfte aber eigentlich nicht sein, weil die JScrollPane als letztes hinzugefügt wird und somit auch das letzte Element der Taborder sein müsste.

Hat jemand ne Idee wie man das beheben kann? Ich habe bisher keine adäquate Lösung gefunden.

Danke

Senior Sanchez

HellHorse
2005-05-15, 17:07:10
Auf die Schnelle nur RTFM, sry :(
How to Use the Focus Subsystem (http://java.sun.com/docs/books/tutorial/uiswing/misc/focus.html)
The AWT Focus Subsystem (http://java.sun.com/j2se/1.5.0/docs/api/java/awt/doc-files/FocusSpec.html)