来自JTextField按钮的ActionListener,JTextField无法解析
我试图在下一学期开始学习的东西上先行一步。它基本上是一部手机模板,由一个显示按下按钮的JTextField组成。我的问题是在制作我的actionlistener时,JTextField(名为" numIn")未被识别,收到错误消息称无法解析。以下是我设置手机JPanel的方式代码:
public class Template
{
// the dial pad button strings
private static final String[][] BUTTONSTRINGS =
{
{"1", "2", "3"},
{"4", "5", "6"},
{"7", "8", "9"},
{"*", "0", "#"}
};
private static final Dimension JUNK_SIZE = new Dimension(200, 160);
private JPanel mainPanel = new JPanel();
public Template()
{
JTextField numIn = new JTextField("Enter Phone Number");
JTextField numDisplay = new JTextField("PhoneNumber");
JPanel otherJunkPanel = new JPanel();
otherJunkPanel.add(numDisplay);
otherJunkPanel.add(numIn);
otherJunkPanel.add(new JButton("Send"));
otherJunkPanel.setPreferredSize(JUNK_SIZE);
JPanel dialPadPanel = new JPanel(new GridLayout(0, 3));
这是两个动作监听器,一个用于数字,一个用于非数字:
// action listener for the number buttons only
NumberButtonListener numberBtnListener = new NumberButtonListener();
// listener for other buttons
NonNumberButtonListener nonNumberBtnListener = new NonNumberButtonListener();
for (int i = 0; i < BUTTONSTRINGS.length; i )
{
for (int j = 0; j < BUTTONSTRINGS[i].length; j )
{
String btnString = BUTTONSTRINGS[i][j]; // get the button string from array
JButton btn = new JButton(btnString); // use it to make button
// if a number button, add the number button's listener
if ("012345679".contains(btnString))
{
btn.addActionListener(numberBtnListener);
}
else
{
btn.addActionListener(nonNumberBtnListener);
}
这里是我得到错误的地方,当我告诉动作监听器在JTextField上显示名为&#34; numIn&#34;的按钮时,无法识别numIn:
private class NumberButtonListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String buttonPressedString = e.getActionCommand();
numIn.setText("Number Button Pressed: " buttonPressedString);
// TODO finish
}
}
我的编码不是很强,因为它不是我的专业,所以我感谢任何可能的帮助。我应该预先知道,这些代码的大部分内容都是我过去所做过的一些实验室的代名词。谢谢!
最佳答案:
3 个答案:
答案 0 :(得分:0)
试试这个
je.executeScript("arguments[0].scrollIntoView(true);",element);
然后改变这个
private class NumberButtonListener implements ActionListener
{
Template parent=null;
NumberButtonListener(Template parent)
{
this.parent = parent;
}
public void actionPerformed(ActionEvent e)
{
String buttonPressedString = e.getActionCommand();
parent.numIn.setText("Number Button Pressed: " buttonPressedString);
// TODO finish
}
}
到
NumberButtonListener numberBtnListener = new NumberButtonListener();
向模板类添加新的私有字段
NumberButtonListener numberBtnListener = new NumberButtonListener(this);
在构造函数中更改为
private JTextField numIn=null;
答案 1 :(得分:0)
你的numIn是构造函数的局部变量。
如果要在其他方法上使用它,则应将其声明为类变量。 (或通过方法的参数传递它)
答案 2 :(得分:0)
JTextField numIn = new JTextField("Enter Phone Number");
JTextField numDisplay = new JTextField("PhoneNumber");
public Template()
{
.......
你需要把它放在班级范围内。目前它是在构造函数中。所以它不适用于构造函数的外侧
本文经用户投稿或网站收集转载,如有侵权请联系本站。