I dette tilfælde skal du kigge på metoderne arvet fra java.awt.Component. Metoden requestFocus() kan altid bruges på synlige komponenter. Virker dette ikke, så prøv med transferFocus(), som flytter fokus til næste komponent.
Hvis det andet ikke virker, kan du bruge en FocusListener:
public class XXX implements FocusListener .............................. public void focusGained(java.awt.event.FocusEvent fe) { Object source = fe.getSource(); if ( source == dinFelt){
beskedFelt.requestFocus(); } if ( source == table) {
beskedFelt.requestFocus(); } if ( source == beskedFelt){
}
} public void focusLost(java.awt.event.FocusEvent fe){ Object source = fe.getSource(); if ( source == beskedFelt) { ....... } }
FocusListener reagerer når fokus er etableret, det har intet at gøre med at få fokus.
Hvis et JTextField eller lignende skal have fokus i et program opstart skal du rigtigt nok bruge requestFocus(), men du skal gøre det i en WindowAdapter.
Se følgende eksempel hvor jeg fra start selecter area2 og også bruger en FocusListener for at lytte på hvornår en bruger klikker i area2. Ved klik i area2 bliver al teksten markeret.
public class TestFrame extends JFrame { public TestFrame() { super("Test"); setSize(600,400);
final JTextArea area1 = new JTextArea(); area1.setLineWrap(true); area1.setWrapStyleWord(true); for( int i = 0; i < 10; i++ ) { area1.append("Quick brown fox jumps over lazy dog\n"); } final JTextArea area2 = new JTextArea(); area2.addFocusListener(new FocusAdapter() { public void focusGained(FocusEvent event) { System.out.println ("wohoo, area2 har fokus"); area2.selectAll(); } });
JSplitPane split = new JSplitPane ( JSplitPane.HORIZONTAL_SPLIT, new JScrollPane(area1), new JScrollPane(area2) ); split.setDividerLocation(290); getContentPane().add(split, BorderLayout.CENTER);
addWindowListener(new WindowAdapter() { public void windowOpened(WindowEvent event) { area2.requestFocus(); } }); } public static void main(String[] args) { new TestFrame().show(); } }
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.