我是Java的新手,正在尝试为我的程序弄清楚最后一件事。
这是我编写的程序,布局合理,完全没有问题。
现在,我的程序假设只要在键盘上按下它,就突出显示按钮(不要通过按下屏幕上的按钮)
我不确定我必须使用什么,因为它需要执行的操作是当他们在JTextArea
中键入它时。我正在尝试将KeyEvent
与KeyPressed
一起使用,但不确定这样做是否正确,因为它实际上并不起作用。
我目前无法在此处发布代码,因为这是一项作业,并且我不希望我的一些同学去google并在他们在这里找到的情况下使用它。 (大声笑)
根据需要,这是我的代码:)
import javax.swing.*; // import all javax.swing
import java.awt.*; // import all java.awt
import java.awt.event.*;
public class Sample extends JFrame implements KeyListener { // start of the
// class
private JTextArea field = new JTextArea(10,15); // create an instance of
// JTextField
private JPanel mainPanel = new JPanel(); // create an instance of JPanel
private JPanel TopFieldPan = new JPanel();
private JPanel MainBtnsPan = new JPanel();
private JPanel FifthRowPan = new JPanel();
JPanel fifthBtn = new JPanel();
private static JButton Space = new JButton("");
public Sample() { // start of the weather constructor
Space.setPreferredSize(new Dimension(280, 45));
fifthBtn.add(Space);
TopFieldPan.add(field);
FifthRowPan.setLayout(new BoxLayout(FifthRowPan, BoxLayout.X_AXIS));
FifthRowPan.add(fifthBtn);
MainBtnsPan.setLayout(new GridLayout(5, 5, 0, 0));
MainBtnsPan.add(FifthRowPan);
mainPanel.add(TopFieldPan);
mainPanel.add(MainBtnsPan);
this.add(mainPanel);
Space.setSelected(true);
field.addKeyListener(this); // important !!!
setTitle("Typing Tutor"); // set the title to the frame
setSize(300, 300); // set the fixed size
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true); // make it visible
} // ends of the constructor
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_SHIFT) {
Space.setBackground(Color.green);
}
}
public void keyReleased(KeyEvent evt) {
Space.setBackground(null);
}
public void keyTyped(KeyEvent evt) {
// TODO Auto-generated method stub
if(evt.getKeyChar() == 'a' || evt.getKeyChar() == 'A')
{
Space.setBackground(Color.green);
}
else if(evt.getKeyChar() == 'b' || evt.getKeyChar() == 'B')
{
Space.setBackground(Color.red);
}
}
public static void main(String[] args) { // start of the main method
new Sample();
} // ends of main method
} // ends of class
我尽力简化了代码,这是最后一个。
因此,当我按
a
或A
时,它应该突出显示该空格JButton。 最佳答案
创建一个按钮和它们所映射的键的映射,如下所示:
Map<String, JButton> buttonMap = new HashMap<String, Button>();
然后,在添加按钮时,将它们添加到地图,如下所示:
buttonMap.put(FirstRow[i].toLowerCase(), btn);
然后,将以下内容添加到您的KeyTyped中:
public void keyTyped(KeyEvent evt) {
String keyPressed = new String(""+evt.getKeyChar()).toLowerCase();
JButton tmp = buttonMap.get(keyPressed);
if(null != tmp){
tmp.doClick();
}
}
我很快对您的第1行和第2行的代码进行了处理。您必须对其进行处理才能使其适用于特殊键,但是它应该可以将您带到尝试的位置。
我将其粘贴在此处,以使答案保持较小。
http://pastebin.com/t1v8d6Hi