我尝试创建一个java GUI,显示用户在文本区域输入的数字的乘法表
问题是,结果没有完全显示在文本区域中。 例如,如果我输入数字3,则文本区域中仅显示“30”。但结果完全显示在输出监视器中,即使用System.out.print方法。如果我使用任何其他组件,则无法在文本区域中显示结果。救命啊!
这是我完成的编码
int input_val = Integer.parseInt(InputNum.getText().trim());
int c=input_val*10;
int i;
for(i=input_val;i<=c;i=i+input_val)
{
TableOutputArea.setText(i+"\n");
System.out.print(i+"\n");
}
显示器输出:
3
6
9
12
15
18
21
24
27
30
答案 0 :(得分:3)
您必须使用TableOutputArea.append(i+"\n");
代替setText()
方法。
答案 1 :(得分:2)
您的问题如下:
TableOutputArea.setText第(i + “\ n”);
此语句清除TextArea中的文本并将新文本设置到其中。因此只需在TextArea中插入30即可。要解决这个问题,你应该使用
TableOutputArea.append()
它将文本附加到TextArea
中字符串的末尾答案 2 :(得分:2)
如我的评论所述,请使用JTextArea.append()而不是JTextArea.setText()。 JTextArea.append()
允许您向JTextArea
的现有内容添加更多文字,而不是JTextArea.setText()
,而import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JTextAreaExample {
private static final int GAP = 5;
private JTextField tField;
private JTextArea tArea;
private void displayGUI() {
JFrame frame = new JFrame("JTextArea Example");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
JPanel contentPane = new JPanel();
contentPane.setLayout(new BorderLayout(GAP, GAP));
JPanel upperPanel = new JPanel();
upperPanel.setLayout(new FlowLayout(FlowLayout.CENTER, GAP, GAP));
JLabel label = new JLabel("Enter number: ", JLabel.CENTER);
tField = new JTextField(10);
tField.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
int number = Integer.parseInt(tField.getText());
tArea.setText("");
for (int i = 1; i <= 10; ++i) {
tArea.append("" + number + " X " + i + " = " + (i * number) + "\n");
}
}
});
upperPanel.add(label);
upperPanel.add(tField);
tArea = new JTextArea(10, 10);
contentPane.add(upperPanel, BorderLayout.PAGE_START);
contentPane.add(tArea, BorderLayout.CENTER);
frame.setContentPane(contentPane);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new JTextAreaExample().displayGUI();
}
});
}
}
只是将新文字替换为之前的文字。这是一个小例子:
JTextArea.append(...)
输出:
修改强>
虽然另一方面,如果您希望数字正确对齐,一个在彼此之下,您可以使用此行修改单行(tArea.append(String.format("%-3d X %-3d = %-3d\n", number, i, (number * i)));
){{1}}