Win a copy of Transfer Learning for Natural Language Processing (MEAP) this week in the Artificial Intelligence and Machine Learning forum!
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Tim Cooke
  • Paul Clapham
  • Devaka Cooray
  • Bear Bibeault
Sheriffs:
  • Junilu Lacar
  • Knute Snortum
  • Liutauras Vilda
Saloon Keepers:
  • Ron McLeod
  • Stephan van Hulst
  • Tim Moores
  • Tim Holloway
  • Piet Souris
Bartenders:
  • salvin francis
  • Carey Brown
  • Frits Walraven

JTabbedPane with Keyevents

 
Greenhorn
Posts: 19
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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);


}
}
 
Ranch Hand
Posts: 4632
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
> 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
Posts: 19
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thanks Michael. As you said keybindings is better option to handle these events. The sample code looks perfect what i was looking for.

Thanks
 
See ya later boys, I think I'm in love. Oh wait, she's just a tiny ad:
Two software engineers solve most of the world's problems in one K&R sized book
https://coderanch.com/wiki/718759/books/Building-World-Backyard-Paul-Wheaton
    Bookmark Topic Watch Topic
  • New Topic