我无法将值输出到 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)));
我尝试创建一个 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)));