我试图使用Intellij的GUI表单设计器来为类项目设计GUI。我从来没有真正使用过挥杆,所以它比我原先想象的要困难得多。
基本上,我已经创建了GUI表单并将其绑定到我的类,然后我根据在线指令生成了主要方法。当我没有工作时,我试图使用.add来添加它。
这就是我现在所处的位置。 https://pastebin.com/u0gcs15u
public static void main(String[] args) {
JFrame frame = new JFrame("TicketGenie");
frame.setContentPane(new TicketGenie().panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
这就是表格的样子。 https://imgur.com/a/5CYIM
我还应该提一下,我正在获取main方法的空指针异常。另外,我目前正在上课的是编程基础,这高于我们正在学习的内容,但我一直在努力教自己如何使用java制作一个中等体面的GUI。
感谢。
答案 0 :(得分:1)
Intellij使用GUI表单问题
这不是关于使用GUI表单问题的Intellij,您正在获取空指针异常,因为您在构造函数TicketGenie()中的TicketGenie java类中尝试添加空容器和组件。
您刚刚声明了JPanel容器和其他组件但忘记初始化,
这是你获得空指针异常的原因。
public class TicketGenie {
private JPanel panel;
private JTextField firstname;
private JTextField lastname;
private JTextField address;
private JTextField city;
private JTextField state;
private JTextField zipcode;
private JTextField phonenumber;
private JTextField email;
private JTextField numberoftickets;
private JButton submitButton;
private JLabel firstnamelbl;
private JLabel lastnamelbl;
private JLabel addresslbl;
private JLabel citylbl;
private JLabel statelbl;
private JLabel zipcodelbl;
private JLabel phonenumberlbl;
private JLabel emaillbl;
private JLabel ticketlbl;
public TicketGenie() {
panel.add(firstname);
panel.add(lastname);
panel.add(address);
panel.add(city);
panel.add(state);
panel.add(zipcode);
panel.add(phonenumber);
panel.add(email);
panel.add(numberoftickets);
panel.add(firstnamelbl);
panel.add(lastnamelbl);
panel.add(addresslbl);
panel.add(citylbl);
panel.add(statelbl);
panel.add(zipcodelbl);
panel.add(phonenumberlbl);
panel.add(emaillbl);
panel.add(ticketlbl);
submitButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
}
});
}
}
解决方案java类
public class TicketGenie {
//Initialized and declared static JPanel Container
static JPanel panel=new JPanel();
//Components declared
private JTextField firstname;
private JTextField lastname;
private JTextField address;
private JTextField city;
private JTextField state;
private JTextField zipcode;
private JTextField phonenumber;
private JTextField email;
private JTextField numberoftickets;
private JButton submitButton;
private JLabel firstnamelbl;
private JLabel lastnamelbl;
private JLabel addresslbl;
private JLabel citylbl;
private JLabel statelbl;
private JLabel zipcodelbl;
private JLabel phonenumberlbl;
private JLabel emaillbl;
private JLabel ticketlbl;
public TicketGenie() {
//Components initialized
firstname=new JTextField();
lastname=new JTextField();
address=new JTextField();
city=new JTextField();
state=new JTextField();
zipcode=new JTextField();
phonenumber=new JTextField();
email=new JTextField();
numberoftickets=new JTextField();
submitButton=new JButton();
firstnamelbl=new JLabel();
lastnamelbl=new JLabel();
addresslbl=new JLabel();
citylbl=new JLabel();
statelbl=new JLabel();
zipcodelbl=new JLabel();
phonenumberlbl=new JLabel();
emaillbl=new JLabel();
ticketlbl=new JLabel();
//Add Components to JPanel Container
panel.add(firstname);
panel.add(lastname);
panel.add(address);
panel.add(city);
panel.add(state);
panel.add(zipcode);
panel.add(phonenumber);
panel.add(email);
panel.add(numberoftickets);
panel.add(firstnamelbl);
panel.add(lastnamelbl);
panel.add(addresslbl);
panel.add(citylbl);
panel.add(statelbl);
panel.add(zipcodelbl);
panel.add(phonenumberlbl);
panel.add(emaillbl);
panel.add(ticketlbl);
submitButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
}
});
}
}
Foo Class
JFrame框架设置TicketGenie Class
的静态JPanel面板的ContentPane
public class Foo {
public static void main(String[] args) {
JFrame frame = new JFrame("TicketGenie");
frame.setContentPane(new TicketGenie().panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
}
注意:您需要设置组件的高度,重量等,并为外观UI设置布局属性