来自JTextField按钮的ActionListener,JTextField无法解析

来自JTextField按钮的ActionListener,JTextField无法解析,第1张

我试图在下一学期开始学习的东西上先行一步。它基本上是一部手机模板,由一个显示按下按钮的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()
    {
       .......

你需要把它放在班级范围内。目前它是在构造函数中。所以它不适用于构造函数的外侧

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复