De bedoeling is dat , net zoals in Windows gebruikelijk is, je via het gebruik van de tab over de verschillende menu's / menuItems heen kan lopen. Daarvoor dacht ik dat een FocusTraversalPolicy wel gebruikt zou kunnen worden.
Niets lijkt minder waar te zijn. Als ik onderstaande code run, dan verschijnt er precies wat je verwacht, maar het menu is
1) niet te selecteren met de alt (naja, Alt-f doet het bv wel, maar niet alleen het typen van de Alt),
2) niet via de tab door te lopen..
Hebben jullie enig idee hoe/of ik dit kan oplossen?
Niets lijkt minder waar te zijn. Als ik onderstaande code run, dan verschijnt er precies wat je verwacht, maar het menu is
1) niet te selecteren met de alt (naja, Alt-f doet het bv wel, maar niet alleen het typen van de Alt),
2) niet via de tab door te lopen..
Hebben jullie enig idee hoe/of ik dit kan oplossen?
Java:
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
| import java.awt.Component; import java.awt.Container; import java.awt.FocusTraversalPolicy; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPanel; public class Foo extends JPanel { JFrame frame = new JFrame(); private JMenuBar menuBar = new JMenuBar(); private JMenu file = new JMenu("File"); private JMenu edit = new JMenu("Edit"); private JMenuItem copy = new JMenuItem("Copy"); private JMenuItem exit = new JMenuItem("Exit"); public static void main(String[] args) { new Foo().init(); } public void init() { frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(100,100); file.setMnemonic('f'); edit.setMnemonic('e'); exit.setMnemonic('C'); exit.setMnemonic('x'); exit.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { System.exit(0); }}); edit.add(copy); file.add(exit); menuBar.add(file); menuBar.add(edit); frame.setJMenuBar(menuBar); frame.setFocusTraversalPolicy(new MyFocusTraversalPolicy()); frame.show(); } class MyFocusTraversalPolicy extends FocusTraversalPolicy { public Component getDefaultComponent(Container focusCycleRoot) { return file; } public Component getFirstComponent(Container focusCycleRoot) { return file; } public Component getLastComponent(Container focusCycleRoot) { return edit; } public Component getComponentAfter(Container focusCycleRoot, Component aComponent) { if(aComponent == file) { return edit; } else { return file; } } public Component getComponentBefore(Container focusCycleRoot, Component aComponent) { if(aComponent == file) { return edit; } else { return file; } } } } |