我无法将值输出到j文本区域

时间:2015-01-26 08:31:09

标签: java swing user-interface integer jtextarea

我尝试创建一个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

3 个答案:

答案 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(...)

输出:

JTextAreaExampleOUTPUT

修改

虽然另一方面,如果您希望数字正确对齐,一个在彼此之下,您可以使用此行修改单行(tArea.append(String.format("%-3d X %-3d = %-3d\n", number, i, (number * i)));){{1}}