Author
JTabbedPane with Keyevents
Nina Milo
Greenhorn
Joined: Jul 29, 2008
Posts: 19
I have created a tabbedpane with 3 tabs (Tab1, Tab2, Tab3) . Mnemonic (ALT-F) is assigned only to the Tab1. If any of the component is selected inside the Tab2 or Tab3, it can still traverse back to Tab1 on pressing key ALT-F. But if any component is selected in the Tab1 itself, pressing ALT-F will not take me back to Tab1. I have to somehow get the focus for Tab1 too. Here is my code. Just copy-Paste to run it. Please provide assistance. Thank you. Note: I don�t want to set Mnemonic to each Tab. Only one Mnemonic should do my work. import java.awt.BorderLayout ; import java.awt.event.KeyEvent ; import javax.swing.JButton ; import javax.swing.JCheckBox ; import javax.swing.JFrame ; import javax.swing.JLabel ; import javax.swing.JPanel ; import javax.swing.JTabbedPane ; import javax.swing.event.ChangeEvent ; import javax.swing.event.ChangeListener ; public class myClass { public static void main(String args[]) throws Exception { JFrame frame = new JFrame (); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JTabbedPane tabbedPane = new JTabbedPane (); JButton button1= new JButton ("Button1"); JButton button2= new JButton ("Button2"); JPanel panel1 = new JPanel (); panel1.add(button1); panel1.add(button2); tabbedPane.addTab("Tab1", null, panel1, null); JLabel label = new JLabel ("Check "); JCheckBox cbox = new JCheckBox ("check me"); JPanel panel = new JPanel (); panel.add(label, null); panel.add(cbox); tabbedPane.addTab("Tab2", null, panel, null); JButton button3 = new JButton ("Button"); tabbedPane.addTab("Tab3", null, button3, null); int mnemonic = KeyEvent.VK_F; tabbedPane.setMnemonicAt(tabbedPane.getSelectedIndex(), mnemonic); ChangeListener changeListener = new ChangeListener () { public void stateChanged(ChangeEvent changeEvent) { JTabbedPane tab = (JTabbedPane )changeEvent.getSource(); int index = tab.getSelectedIndex(); if(index==0) tab.requestFocus(); } }; tabbedPane.addChangeListener(changeListener); frame.add(tabbedPane, BorderLayout.CENTER); frame.setSize(400, 150); frame.setVisible(true); } }
Michael Dunn
Ranch Hand
Joined: Jun 09, 2003
Posts: 4632
posted Jul 29, 2008 21:55:00
0
> But if any component is selected in the Tab1 itself, pressing ALT-F > will not take me back to Tab1. I have to somehow get the focus for Tab1 too. the problem is the focus request is in a changeListener, and as the selectedIndex does not change, the request is not called. KeyBindings might be a better option for you.
Nina Milo
Greenhorn
Joined: Jul 29, 2008
Posts: 19
Thanks Michael. As you said keybindings is better option to handle these events. The sample code looks perfect what i was looking for. Thanks
subject: JTabbedPane with Keyevents