【问题标题】:How to use JMenuItems to display integers on seperate lines in a JTextArea?如何使用 JMenuItems 在 JTextArea 中的单独行上显示整数?
【发布时间】:2019-10-21 06:27:59
【问题描述】:

我正在使用带有四个 JMenuItems(名为 Inc、Dec、Reset、Quit)的 JMenu(名为 Count)。当我单击任何菜单项时,我希望它在 JTextArea 中显示整数。例如,每次我点击 Inc 时,它应该显示从 0 开始垂直列出的整数。现在的问题是,当我按下 Dec 菜单项时,它没有采用最后列出的数字。

我尝试使用 getText 方法,但我不断收到 NumberFormatException 并说输入字符串是一堆数字,例如:

0
1
2
3
4

据我所知,我知道我需要能够以所有菜单项(除了退出菜单项)都可以访问和更改它的方式跟踪最后一个数字。我只是不知道该怎么做。

这是我尝试过的其中一种方法,它给了我上面提到的错误。

//newLine = "\n";

public void actionPerformed(ActionEvent ae) {

      String ac = ae.getActionCommand();

         if(ac.equals("Inc")) {    

            jta.append(count + newLine);
            count++; 

         }
         else if(ac.equals("Dec")) {

            count = Integer.parseInt(jta.getText());
            countText = Integer.toString(count); 
            jta.append(countText + newLine);
            count--;

         }
         else if(ac.equals("Reset")) {

            jta.selectAll();
            jta.replaceSelection("0");   
            count = 0;

         }
         else if(ac.equals("Quit")) {

            System.exit(0);

         }

}

我期待

0
1
2
3
4
3
2
1

当我点击 Inc 和 Dec 时显示在 TextArea 中

但它只是

0
1
2
3
4

然后我得到一个NumberFormatException 说输入字符串是:

0
1
2
3
4

如果可能,我希望输入字符串只是文本区域中的最后一个整数。

我希望这是有道理的。这是我第一次在 stackoverflow 上发帖。

【问题讨论】:

    标签: java swing append jtextarea jmenuitem


    【解决方案1】:

    当您获取文本时,它返回“0 1 2 3 4”,无法解析整数,因此出现异常。 如果要获取文本字段中的最后一个整数,则需要检索文本并找到表示最后一个整数的子字符串。查看 String 的 javadocs,尤其是 lastIndexOf()、split() 和 substring() 方法。

    如果您已将每个整数放在单独的行上,并记录了实例变量“count”中输入的最后一个数字,那么您只需调用jta.append( (count-1) + newLine); 而无需检索文本。

    请注意,您的代码不会保存最后输入的数字 - 它会保存 (last+1)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-13
      • 2013-11-26
      • 2013-11-27
      相关资源
      最近更新 更多