我正在研究计算器/电话输入键盘,并且在让它实际显示按钮时遇到了各种麻烦。当一切都在 main 方法中时,我让它工作,但这不允许我实现 ActionListener,我需要它才能使按钮工作。这是我现在拥有的代码:
import java.awt.*; //Import everything
import java.util.*;
import java.awt.event.*;
import javax.swing.*; //Seriously, everything, just makes this easier
public class Keypad extends JPanel implements ActionListener {
public static void main(String[] args) {
//Create the frame that holds everything else
JFrame frame = new JFrame ("Almost Functional Keypad");
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
//Create the keypad
frame.getContentPane().add(new Keypad());
//Stuff to do so it won't break
frame.setPreferredSize(new Dimension(350,400));
frame.pack();
frame.setVisible(true);
frame.setResizable(false);
}
public Keypad(){
//Create the array of JPanels and labels
JButton[] keyList = new JButton[12];
JLabel[] keyLabel = new JLabel[12];
//Array with the key labels
String[] keyLabelText = {"1","2","3","4","5","6","7","8","9","*","0","#"};
//We need a counter
int i;
//Create the panels
for (i=0; i<12; i++){
keyList[i]= new JButton();
keyList[i].setPreferredSize (new Dimension(100, 75));
keyLabel[i] = new JLabel (keyLabelText[i]);
keyList[i].add (keyLabel[i]);
keyList[i].addActionListener(this);
}
//Text field that only the buttons can modify
JTextArea displayText = new JTextArea();
displayText.setPreferredSize(new Dimension(320, 20));
//Create the "clear" button
JButton clear = new JButton();
clear.setPreferredSize(new Dimension(300, 40));
JLabel clearLabel = new JLabel ("Clear");
clear.add(clearLabel);
clear.addActionListener(this);
// Set up primary panel
JPanel primary = new JPanel();
primary.add(displayText);
for (i=0; i<12; i++){
primary.add (keyList[i]);
}
primary.add(clear);
}
public void actionPerformed (ActionEvent event){
//Stuff goes here eventually
}
}
我很确定它与在 main 中调用 Keypad() 有关,但我不知道如何调用它并显示内容。我必须在构造函数中创建面板,否则我无法添加 ActionListener,但现在我不知道如何将它们放入框架中。
感谢您的帮助,我希望这只是我忘记的一些小而愚蠢的事情。