我正在尝试制作一个表单,该表单接受用户输入的名字和姓氏,并结合两者打印欢迎消息。我想将输入的内容组合到一个网格面板中,然后将“Go”按钮和在另一个面板中显示消息的文本字段组合在一起,并在一个框架内使用 BorderLayout 将它们嵌套在一起。
通用布局:
(在 3x2 网格中)
First Name: __________________________
Last Name: __________________________
Age: _______________
“GO BUTTON” “欢迎 Mark Summers”
教授希望将所有内容都放在一个 .java 文件中,这是我的问题。我通常会将这些东西分开然后扩展类并且没有问题。我要做的是将输入和输出面板保存在我的构造函数下,然后在我的主目录下,创建
JFrame frame = new JFrame();
进而
add(new CalebBreckonHW3(320,120));
从而在我的 700x700 JFrame“框架”内放置一个 320x120 面板。尽管我无法从静态上下文中引用非静态方法 add(java.awt.Component),但我收到一条错误消息。我无法将 main 设置为非静态,否则会出错。
我现在正在通过任何人都可以指出我正确的方向来向其中添加代码吗?
import java.awt.*;
import javax.swing.*;
public class CalebBreckonHW3 extends JFrame {
private JButton jbtGreet = new JButton("Greet Me");
private JLabel firstOprLbl = new JLabel("First name");
private JLabel lastOprLbl = new JLabel("Last name");
private JLabel ageOprLbl = new JLabel("Age");
private JTextField jtfFirst = new JTextField(10);
private JTextField jtfLast = new JTextField(15);
private JTextField jtfAge = new JTextField(3);
// I'll get to the action events after I get this down
private JTextField jtfGreet = new JTextField("Welcome firstname, lastname");
public CalebBreckonHW3(int height, int width) {
setLayout(new BorderLayout());
setSize(height, width);
JPanel inputPanel = new JPanel();
inputPanel.setLayout(new GridLayout(3,2,0,5));
jtfGreet.setEditable(false);
inputPanel.add(firstOprLbl);
inputPanel.add(jtfFirst);
inputPanel.add(lastOprLbl);
inputPanel.add(jtfLast);
inputPanel.add(ageOprLbl);
inputPanel.add(jtfAge);
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setTitle("Greeting App");
frame.setSize(700,700);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
add(new CalebBreckonHW3(320,120));
}
}
编辑:在我的 add 语句前面添加框架消除了静态错误,但它给了我一个错误“将窗口添加到容器”