Java 为什么control TAB按键不起作用?
下面是我的代码Java 为什么control TAB按键不起作用?,java,swing,keystroke,Java,Swing,Keystroke,下面是我的代码 import java.awt.Color; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.util.Arrays; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.JComponent; import javax.swing.JFrame; import jav
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.util.Arrays;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.KeyStroke;
public class Test {
private int selected = 0;
public Test() {
JLabel[] lables = new JLabel[] { new JLabel("Lable1"),
new JLabel("Label2") };
JFrame frame = new JFrame("FrameDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel contentPane = (JPanel) frame.getContentPane();
contentPane.setLayout(new FlowLayout());
contentPane.add(lables[0]);
contentPane.add(lables[1]);
frame.pack();
contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
KeyStroke.getKeyStroke("control TAB"), "next");
Action action = new AbstractAction("next") {
private static final long serialVersionUID = 1L;
@Override
public void actionPerformed(ActionEvent e) {
selected++;
Arrays.stream(lables).forEach(
l -> l.setForeground(Color.LIGHT_GRAY));
lables[selected % 2].setForeground(Color.BLACK);
System.out.println(selected);
contentPane.revalidate();
contentPane.repaint();
}
};
contentPane.getActionMap().put("next", action);
frame.setVisible(true);
}
public static void main(String[] args) {
new Test();
}
}
但当我按下control TAB时,什么也没发生。但是如果我将代码更改为类似于KeyStroke.getKeyStroke(“controlk”),“next”)代码>控件K keystrke更改前景色
我做错了什么?“控制选项卡”是否保留用于某些目的?如果是这样的话,我如何改变这种行为,以便我可以将击键绑定到我的操作?putframe.setFocusTraversalKeysEnabled(false)的可能重复代码>根据副本link@Madhan谢谢你的回答,Madhan,但我的问题也涉及到控制键。链接问题及其答案涉及TAB键和SHIFT键。我想确保答案也适用于CTRL-TAB。只要在代码中添加上面提到的行,它就会工作