26. november 2008 - 23:17
Der er
2 kommentarer og 1 løsning
Keybinding JTabbedPane
Hey Hvordan kan jeg binde Ctrl+Tab og Ctrl+Shift+Tab til at tabbe frem&tilbage i et JTabbedPane? SUN har jo været så ærkegeniale at diable enhver mulighed for at lave en keylistener til tab knappen.
Annonceindlæg fra IBM
27. november 2008 - 22:59
#1
Det kan sikkert gøres på mange måder, men lidt google fumleri ledte mig til følgende: package november; import java.awt.BorderLayout; import java.awt.Font; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTabbedPane; import javax.swing.SwingUtilities; public class TabPanFun extends JFrame implements KeyListener { private static final int NOTABS = 5; private JTabbedPane tabs; private int curtab = 0; public TabPanFun() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setTitle("Tabbing demo"); setLayout(new BorderLayout()); tabs = new JTabbedPane(); JPanel[] tab = new JPanel[NOTABS];; for(int i = 0; i < NOTABS; i++) { tab[i] = new JPanel(); tab[i].setLayout(new BorderLayout()); JLabel lbl = new JLabel(); lbl.setFont(new Font(Font.SERIF, Font.PLAIN, 72)); lbl.setText("I am tab #" + (i + 1)); tab[i].add(lbl, BorderLayout.CENTER); tabs.addTab("tab" + (i + 1), tab[i]); } tabs.setFocusTraversalKeysEnabled(false); tabs.addKeyListener(this); getContentPane().add(tabs, BorderLayout.CENTER); setSize(600, 400); } @Override public void keyPressed(KeyEvent e) { if(e.getModifiers() == KeyEvent.CTRL_MASK && e.getKeyCode() == KeyEvent.VK_TAB) { curtab = (curtab + 1) % NOTABS; tabs.setSelectedIndex(curtab); } else if(e.getModifiers() == (KeyEvent.CTRL_MASK | KeyEvent.SHIFT_MASK) && e.getKeyCode() == KeyEvent.VK_TAB) { curtab = (curtab - 1 + NOTABS) % 5; tabs.setSelectedIndex(curtab); } } @Override public void keyReleased(KeyEvent e) { } @Override public void keyTyped(KeyEvent e) { } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { JFrame f = new TabPanFun(); f.setVisible(true); } }); } }