在对话框(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。不管怎样,我成功了!非常感谢你的帮助。我真的很感激!