我已经创建了一个jframe,并且我添加了一个按钮,点击它后,它会要求您按任何按钮,该按钮也会显示在按钮上。
(它的显示应该是这样 - >“点击我” - >“按任意按钮” - >“空格键”)
我的问题1号是,我不想从“点击我”去按空格键“按任意按钮”。
而我的第二个问题是,当我在“按任意按钮”时,按下空格键,释放时,它将返回到“按任意按钮”而不是停留在“空格键”处。
这是我的代码。如何停止空格键触发按钮上的点击效果?
public class Test {
/**
* @param args the command line arguments
*/
static class starton implements ActionListener {
private JButton button;
private JFrame frame;
public starton(JButton button, JFrame frame) {
this.button = button;
this.frame = frame;
}
public void actionPerformed(ActionEvent e) {
button.setText("Press A Button");
button.setSize(button.getPreferredSize());
button.addKeyListener(
new KeyListener() {
@Override
public void keyPressed(KeyEvent e){
String text = null;
char a = e.getKeyChar();
text = ""+a+"";
if (a == ' '){
text = "Space Bar";
}
button.setText(""+text+"");
button.setSize(button.getPreferredSize());
button.removeKeyListener(this);
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyReleased(KeyEvent ke) {
}
});
}
}
public static void main(String[] args) throws IOException {
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
double width = screenSize.getWidth();
double height = screenSize.getHeight();
int frame1w = 600;
int frame1h = 400;
JFrame frame1 = new JFrame("Foo");
frame1.setSize(frame1w, frame1h);
frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel contentPane = new JPanel();
contentPane.setBackground(Color.WHITE);
contentPane.setLayout(null);
frame1.setContentPane(contentPane);
JButton button1 = new JButton("Click Me");
button1.setSize(button1.getPreferredSize());
button1.addActionListener(new starton(button1, frame1));
// add more code here
contentPane.add(button1);
frame1.setVisible(true);
}
}
有关first1,我为什么要禁用“按”空格键?这不应该是整个点?我的意思是按空格键?我也没有多功能按钮,它只是1 ..也就第二个问题,我试图取消成功的动作听众,但我想能够做例行无数次,因为我想,不只是一次 –
它把你的整个问题作为*“如何停止空格键触发按钮点击效果?*”和*“我不想从”点击我“去按”空格键按任意按钮“。”*作为含义,您想要禁用该按钮的[空格]栏功能。 *“我也没有多功能按钮,它只是1”* - 是的,这就是你的“核心”问题; – MadProgrammer
*“我试图取消成功的动作监听,但我希望能够按照我想做的次数做多次,而不仅仅是一次”*和?再次,两个按钮将有助于解决您遇到的大部分问题。你可以简单地将它们交换到适当的位置。因为你同时在按钮上注册了一个KeyListener和一个ActionListener,所以每当你按下[Space]时,它们都会被触发,在我看来,你只是要求解决问题,通过使用两个(或更多)按钮,每个按钮都有自己的目标功能 – MadProgrammer