Bonjour, le programme suivant affiche un JTextArea et un JButton "Close". J'ai définit le JButton comme default button car je voudrais qu'il ait le focus dés que j'ouvre la fenêtre. Or, quand je lance le programme, le bouton est bien en surbrillance mais le focus est sur le texfield. Comment faire ?
Merci de votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74 package test; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.ScrollPaneConstants; import javax.swing.border.EtchedBorder; public class Test { static JPanel southPanel; static JButton closeButton; static JFrame frame; static JTextArea textArea; private static final Dimension REASON_AREA_SIZE = new Dimension(250, 50); public static void main(String args[]) { String title = ""; frame = new JFrame(); frame.setLayout(new BorderLayout()); frame.setSize(1000, 800); textArea = new JTextArea(); textArea.setLineWrap(true); textArea.setWrapStyleWord(true); textArea.setEditable(true); JScrollPane lScrollPane = new JScrollPane(textArea); lScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED); lScrollPane.setPreferredSize(REASON_AREA_SIZE); frame.add(lScrollPane, BorderLayout.CENTER); frame.add(createSouthPanel(), BorderLayout.SOUTH); //Here the close button is defined by default, the focus should be on it setDefaultButton(); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.setTitle(title); frame.setVisible(true); } private static JPanel createSouthPanel() { southPanel = new JPanel( new FlowLayout(FlowLayout.RIGHT, 10, 10)); southPanel.setBorder(new EtchedBorder(EtchedBorder.RAISED)); addCloseButton(southPanel); return southPanel; } /** * Set the close button as default */ protected static void setDefaultButton() { frame.getRootPane().setDefaultButton(closeButton); } private static void addCloseButton(JPanel pButtonsPanel) { closeButton = new JButton("Close"); closeButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent pEvent) { frame.dispose(); } }); pButtonsPanel.add(closeButton); } }
Partager