Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在对话框(Java)上显示两条注释_Java_Swing_Dialog_Awt_Joptionpane - Fatal编程技术网

在对话框(Java)上显示两条注释

在对话框(Java)上显示两条注释,java,swing,dialog,awt,joptionpane,Java,Swing,Dialog,Awt,Joptionpane,如何使这两个注释都显示在对话框上 下面是我的代码供参考 private class HandleTextField implements ActionListener { @Override public void actionPerformed (ActionEvent e) { String string = ""; if (e.getSource () == textFieldArray [0]) {

如何使这两个注释都显示在对话框上

下面是我的代码供参考

private class HandleTextField implements ActionListener
{
    @Override
    public void actionPerformed (ActionEvent e)
    {
        String string  = "";

        if (e.getSource () == textFieldArray [0])
        {
            string = String.format("1. %s", e.getActionCommand());
        }
        else if (e.getSource () == textFieldArray [1])
        {
            string = String.format("2. %s", e.getActionCommand());
        }

        Object [] fields ={
            "Summary of my changes" , string
        };

        JOptionPane.showMessageDialog(null, fields, "My sugestion to the course", JOptionPane.WARNING_MESSAGE);
    }

}

}

因此,如果您观察,您在每种情况下都会重叠字符串。如果要同时显示这两个选项,至少应执行以下操作:

private class HandleTextField implements ActionListener {
   @Override
   public void actionPerformed (ActionEvent e) {
      String string  = "";

      if (e.getSource () == textFieldArray [0]){
         string += String.format("1. %s", e.getActionCommand());
      } 
      if (e.getSource () == textFieldArray [1]) {
         string += String.format("2. %s", e.getActionCommand());
      }

      String[] fields = {"Summary of my changes" , string};

      JOptionPane.showMessageDialog(null, fields, "My sugestion to the course", JOptionPane.WARNING_MESSAGE);
   }
}
我建议这样做,更建议在字符串对象上添加填充:

private class HandleTextField implements ActionListener {
  @Override
  public void actionPerformed (ActionEvent e) {
     StringBuilder string  = new StringBuilder();

     if (e.getSource () == textFieldArray [0]){
        string.append(String.format("1. %s", e.getActionCommand()));
     } 
     if (e.getSource () == textFieldArray [1]) {
        if(string != null && string.toString().length() > 0){
           string.append(System.lineSeparator());
        }
        string.append(String.format("2. %s", e.getActionCommand()));
     }

     String[] fields = {"Summary of my changes" , string.toString()};

     JOptionPane.showMessageDialog(null, fields, "My sugestion to the course", JOptionPane.WARNING_MESSAGE);
  }
}

以下未经测试的代码将在两个文本字段中的任何一个触发操作时,将这两个文本字段的内容放入对话框中

private class HandleTextField implements ActionListener {
  @Override
  public void actionPerformed (ActionEvent e) {
    StringBuilder string  = new StringBuilder();

    if (e.getSource () == textFieldArray[0] || 
        e.getSource () == textFieldArray[1]){
      string.append(String.format(
          "1. %s", textFieldArray[0].getText())
        );
      string.append(String.format(
          "2. %s", textFieldArray[1].getText())
        );
    }

    String[] fields = {"Summary of my changes" , string.toString()};

    JOptionPane.showMessageDialog(null, fields, "My suggestion to the course", JOptionPane.WARNING_MESSAGE);
  }
}

你需要设计一个更好的用户界面。键入每个注释时,需要使用Enter键是没有意义的。一次只能为一个文本字段生成一个事件。因此,您可能需要添加一个显示注释按钮。然后,当用户单击按钮时,您将从两个文本字段中获得文本,并显示选项窗格。是的,但这正是我的教授希望完成此作业的原因。谢谢你的建议。你试过那个代码吗?结果似乎与原始代码完全相同,因为每个事件都初始化了字符串,并且每个事件只有一个源。一旦我不知道设置了哪个操作,就很难预测行为。我可以假设字符串可以被提取到其他非内部的作用域,然后它可以处理这两个信息,甚至可以让这些字段和它们以前的状态进行比较,并在其他组件中触发此侦听器。谢谢你的建议,但代码不起作用。它的输出仍然和我的一样。我尝试了你的代码,但没有成功。我得到了一长串文本javax.swing.JTextField,64285224x20,layout=javax.swing.plaf.basic.BasicTextUI。。。。。。而不是我在文本字段中键入的内容。我很惊讶它竟然被编译了-我用getText替换了不正确的getActionCommand,应该会有帮助。是的,我在你以前的帖子中添加了e.getActionCommand。不管怎样,我成功了!非常感谢你的帮助。我真的很感激!