JTabbedPane with Keyevents

P

pinik.smily4u

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. Please respond to this.
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 button2 = new JButton("Button");
tabbedPane.addTab("Tab3", null, button2, 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);

}

}
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,482
Members
44,901
Latest member
Noble71S45

Latest Threads

Top