控制台输出到框架,文本区域?
Console output to Frame, text area?
我正在学习 java,我创建了一个掷骰器 - 当我按下按钮时它会掷出一个骰子 - 但输出在控制台中。如何与按钮同框输出
// 抱歉,我不是以英语为母语的人,但我希望你能理解。
import javax.swing.*;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.JTextArea;
public class Main {
public static void main(String s[]){
Random rand = new Random();
JFrame frame = new JFrame("Dice Thrower 2000");
JPanel panel=new JPanel();
panel.setLayout(new FlowLayout());
JLabel label = new JLabel("Throw dice");
JLabel label1 = new JLabel("You got : ");
JTextArea output = new JTextArea(" a ");
JButton buttond4 = new JButton();
buttond4.setText("d4");
buttond4.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent actionEvent) {
int n = rand.nextInt(4) + 1;
System.out.println("You threw d4 and got " + n);
}
});
JButton buttond6 = new JButton();
buttond6.setText("d6");
buttond6.addActionListener(new ActionListener() {...});
JButton buttond8 = new JButton();
buttond8.setText("d8");
buttond8.addActionListener(new ActionListener() {...});
JButton buttond10 = new JButton();
buttond10.setText("d10");
buttond10.addActionListener(new ActionListener() {...});
JButton buttond12 = new JButton();
buttond12.setText("d12");
buttond12.addActionListener(new ActionListener() {...});
JButton buttond20 = new JButton();
buttond20.setText("d20");
buttond20.addActionListener(new ActionListener() {...});
panel.add(label);
panel.add(buttond4);
panel.add(buttond6);
panel.add(buttond8);
panel.add(buttond10);
panel.add(buttond12);
panel.add(buttond20);
panel.add(label1);
frame.add(output);
frame.add(panel);
frame.setSize(500, 200);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
我提供了按钮 d4 - 扩展代码,其余按钮的代码几乎相同。
使用 System.out.println("You threw d4 and got " + n);
导致打印到控制台。
您应该改用 JTextArea#append
方法。
您的代码将变为:
final JTextArea output = new JTextArea(" a ");
JButton buttond4 = new JButton();
buttond4.setText("d4");
buttond4.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent actionEvent) {
int n = rand.nextInt(4) + 1;
output.append("You threw d4 and got " + n + "\n");
}
});
编辑:
您还需要将 output
添加到 JFrame
。您使用
尝试了此操作
frame.add(output);
frame.add(panel);
但这行不通。默认情况下,JFrame
的内容窗格有一个 BorderLayout
,调用 add
将在 BorderLayout#CENTER
中添加组件。该区域只能包含一个组件。
现在你有两个选择:
- 更改
LayoutManager
。 This 很好地概述了可用的标准 LayoutManager
s.
保持当前LayoutManager
,将两个组件添加到不同的区域,例如
frame.add(output, BorderLayout.CENTER);
frame.add(panel, BorderLayout.SOUTH);
我正在学习 java,我创建了一个掷骰器 - 当我按下按钮时它会掷出一个骰子 - 但输出在控制台中。如何与按钮同框输出
// 抱歉,我不是以英语为母语的人,但我希望你能理解。
import javax.swing.*;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.JTextArea;
public class Main {
public static void main(String s[]){
Random rand = new Random();
JFrame frame = new JFrame("Dice Thrower 2000");
JPanel panel=new JPanel();
panel.setLayout(new FlowLayout());
JLabel label = new JLabel("Throw dice");
JLabel label1 = new JLabel("You got : ");
JTextArea output = new JTextArea(" a ");
JButton buttond4 = new JButton();
buttond4.setText("d4");
buttond4.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent actionEvent) {
int n = rand.nextInt(4) + 1;
System.out.println("You threw d4 and got " + n);
}
});
JButton buttond6 = new JButton();
buttond6.setText("d6");
buttond6.addActionListener(new ActionListener() {...});
JButton buttond8 = new JButton();
buttond8.setText("d8");
buttond8.addActionListener(new ActionListener() {...});
JButton buttond10 = new JButton();
buttond10.setText("d10");
buttond10.addActionListener(new ActionListener() {...});
JButton buttond12 = new JButton();
buttond12.setText("d12");
buttond12.addActionListener(new ActionListener() {...});
JButton buttond20 = new JButton();
buttond20.setText("d20");
buttond20.addActionListener(new ActionListener() {...});
panel.add(label);
panel.add(buttond4);
panel.add(buttond6);
panel.add(buttond8);
panel.add(buttond10);
panel.add(buttond12);
panel.add(buttond20);
panel.add(label1);
frame.add(output);
frame.add(panel);
frame.setSize(500, 200);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
我提供了按钮 d4 - 扩展代码,其余按钮的代码几乎相同。
使用 System.out.println("You threw d4 and got " + n);
导致打印到控制台。
您应该改用 JTextArea#append
方法。
您的代码将变为:
final JTextArea output = new JTextArea(" a ");
JButton buttond4 = new JButton();
buttond4.setText("d4");
buttond4.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent actionEvent) {
int n = rand.nextInt(4) + 1;
output.append("You threw d4 and got " + n + "\n");
}
});
编辑:
您还需要将 output
添加到 JFrame
。您使用
frame.add(output);
frame.add(panel);
但这行不通。默认情况下,JFrame
的内容窗格有一个 BorderLayout
,调用 add
将在 BorderLayout#CENTER
中添加组件。该区域只能包含一个组件。
现在你有两个选择:
- 更改
LayoutManager
。 This 很好地概述了可用的标准LayoutManager
s. 保持当前
LayoutManager
,将两个组件添加到不同的区域,例如frame.add(output, BorderLayout.CENTER); frame.add(panel, BorderLayout.SOUTH);