Tabulatorsprünge zwischen Textfeldern

Lautsprecher

Erfahrenes Mitglied
Hi,
ich hab mal wieder eine kleine Frage.
In meinem JFrame befindet sich links eine große JTable. Daneben auf der rechten Seite habe ich vier Textfelder. Die unteren beiden Textfelder sind geschützt.
Ich habe nun das oberste Textfeld mit requestFocus(); initialisiert.
Ich hätte es gern, wenn der Cursor beim Drücken der Tabulatortaste nur zwischen diesem obersten und dem darunterliegenden Textfeld springt. Momentan geht der Focus, dann automatisch auch auf meine JTable?

What should I do?
 
also wenn ich das recht verstanden habe, dürfen alle komponenten den Fokus erhalten nur die JTable nicht.

Versuch mal in deiner JTabel diesen eintrag zu setzen: setFocusable(false);

Damit verhinderst du, dass die JTable den Focus erhalten kann.

Ansonsten gibt es noch die möglichkeit festzulegen welche Komponente als nächstes den Fokus erhalten soll, ist mir aber für diesen fall zu umständlich
 
Hallo!

Schau mal hier:
Code:
 package de.tutorials;
 
 import java.awt.BorderLayout;
 import java.awt.GridLayout;
 
 import javax.swing.JFrame;
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 import javax.swing.JTable;
 import javax.swing.JTextField;
 import javax.swing.table.DefaultTableModel;
 
 public class FocusCycleExample extends JFrame {
 
 	JTextField jtf0,jtf1,jtf2,jtf3;
 	JTable table;
 	
 	public FocusCycleExample(){
 		super("FocusCycleExample");
 		setDefaultCloseOperation(EXIT_ON_CLOSE);
 		
 		table = new JTable(new DefaultTableModel(4,5));
 		
 		jtf0 = new JTextField(10);
 		jtf1 = new JTextField(10);
 		jtf2 = new JTextField(10);
 		jtf3 = new JTextField(10);
 
 		JPanel panel = new JPanel(new GridLayout(4,1));
 		panel.add(jtf0);
 		panel.add(jtf1);
 		panel.add(jtf2);
 		panel.add(jtf3);
 		
 		jtf2.setFocusable(false);
 		jtf3.setFocusable(false);
 		table.setFocusable(false);
 		
 		JScrollPane pane = new JScrollPane(table);
 		pane.setPreferredSize(panel.getPreferredSize());
 		
 		add(panel,BorderLayout.CENTER);
 		add(pane, BorderLayout.WEST);
 		
 		pack();
 		setVisible(true);
 		
 		jtf0.requestFocus();
 	}
 	
 	/**
 	 * @param args
 	 */
 	public static void main(String[] args) {
 		new FocusCycleExample();
 	}
 
 }

Gruß Tom
 
Zurück