How to disconnet arrow-keys in a JTabbPane
Hello!I try to bulid an app that uses a JTabbPane. I would like to be able to use the tab-key and shift+tab-key to switch among the tabbs in the JTabbpane.
I would also like to be able to use the left and right-arrow keys to some special task. But now those keyevents shifts the tabbs as the tab-key.
Does any one know how to disconnect the JTabbPane to listen for arrow-keys?
Below is a quick app that describes this.
Best regards
Fredrik
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.event.*;
import javax.swing.colorchooser.*;
public class TabbTest extends JPanel implements KeyListener
{
JTabbedPane tabbedPane = new JTabbedPane();
JButton b1 = new JButton("1");
JButton b2 = new JButton("2");
JButton b3 = new JButton("3");
JButton b4 = new JButton("4");
int selectedTab = 0;
public TabbTest()
{
setLayout(new BorderLayout());
tabbedPane.addTab("1", null, b1, "");
tabbedPane.addTab("2", null, b2, "");
tabbedPane.addTab("3", null, b3, "");
tabbedPane.addTab("4", null, b4, "");
add(tabbedPane, BorderLayout.CENTER);
tabbedPane.setFocusTraversalKeysEnabled(false);
tabbedPane.addKeyListener( this);
}
public void changeTabb(boolean dir)
{
if(dir)
{
selectedTab++;
if(selectedTab > 3)
{
selectedTab = 0;
}
tabbedPane.setSelectedIndex(selectedTab);
}
else
{
selectedTab--;
if(selectedTab < 0)
{
selectedTab = 3;
}
tabbedPane.setSelectedIndex(selectedTab);
}
}
public void keyPressed(KeyEvent ke)
{
if(ke.getKeyCode() == KeyEvent.VK_TAB)
{
if(ke.getModifiers() != InputEvent.SHIFT_MASK)
{
changeTabb(true);
}
else
{
changeTabb(false);
}
}
else if(ke.getKeyCode() == KeyEvent.VK_LEFT)
{
System.out.println("This key shall not shift the tabbs");
}
else if(ke.getKeyCode() == KeyEvent.VK_RIGHT)
{
System.out.println("This key shall not shift the tabbs");
}
}
public void keyReleased(KeyEvent ke)
{
}
public void keyTyped(KeyEvent ke)
{
}
public static void main(String[] args)
{
TabbTest tabbTest = new TabbTest();
JFrame jFrame = new JFrame("TabbTest");
jFrame.setSize(400, 400);
jFrame.getContentPane().add(tabbTest);
jFrame.show();
}
}
