-2 java swing keyevent keylistener
我需要一些关于我的java代码的帮助我是java的新手,我想要做的是一旦我按下一封信我想显示一些消息只是为了验证代码是否有效.使用javax swing库特别是keylistener和key事件,我不知道我做得对.这是我的代码:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.event.KeyListener;
import java.awt.event.KeyEvent;
public class KeyStrokeButton{
public JFrame frame;
public JPanel panel;
public JButton btnfocus, btnrelease, btnwindow, btnancestor;
public JTextField text;
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable(){
public void run()
{
KeyStrokeButton mydesign = new KeyStrokeButton();
mydesign.design();
}
});
}
public void design()
{
panel = new JPanel();
panel.setLayout(null);
frame = new JFrame("Keystroke Tutorials");
frame.getContentPane().add(panel);
frame.setSize(250, 250);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
btnfocus = new JButton("<html><center>Focus");
btnfocus.setBounds(10, 10, 90, 80);
panel.add(btnfocus);
btnfocus.addKeyListener(new ClickPressed());
btnrelease = new JButton("Release");
btnrelease.setBounds(110, 10, 90, 80);
panel.add(btnrelease);
btnancestor = new JButton("Ancestor");
btnancestor.setBounds(10, 100, 90, 80);
panel.add(btnancestor);
btnwindow = new JButton("Window");
btnwindow.setBounds(110, 100, 90, 80);
panel.add(btnwindow);
}
class ClickPressed implements KeyListener
{
public void KeyPressed(KeyEvent e)
{
//any code.
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想尽可能地分离我的事件代码,所以我创建了一个类来使它可读.
KeyListener在这种背景下,是基于当前的焦点.也就是说,关键事件将仅传递给当前具有焦点的组件.
所以,例如,你有3个按钮.焦点按钮只有在有焦点时才会收到按键事件.如果任何其他组件具有焦点,则焦点按钮将不会接收关键事件.
一般来说,KeyListeners不是一个好主意.使用Key Bindings API会更好
更好地解释你想要实现的目标将有助于我们进一步发展.