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

I am unable to output values into j text area

我尝试创建一个 java GUI,它显示用户在文本区域中输入的数字的乘积 table

问题是,结果没有完全显示在文本区域中。 例如,如果我输入数字 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

您必须使用 TableOutputArea.append(i+"\n"); 而不是 setText() 方法。

你的问题是以下语句:

TableOutputArea.setText(i+"\n");

此语句清除TextArea 中的文本并将新文本设置到其中。所以只有 30 被插入到您的 TextArea 中。要解决这个问题,你应该使用

TableOutputArea.append()

它将文本附加到 TextArea 中字符串的末尾

如我的评论所述,使用 JTextArea.append() instead of using 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)));