我需要在java中创建一个gui,它将从用户获取一个字符串,然后用户将单击提交按钮。单击提交按钮,用户将对字符串进行一些处理,然后在屏幕上输出( GUI)。
到目前为止,我编写了以下代码,但是当我运行此代码时,它没有提供任何输出。
public class userinterface extends javax.swing.JFrame {
public userinterface() {
initComponents();
}
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel2;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel5;
private javax.swing.JTextField jTextField1;
// End of variables declaration
public void show(){
String str=jTextField1.getText();
jButton1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
//Execute when button is pressed
System.out.println("You clicked the button,str");
}
});
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new userinterface().setVisible(true);
userinterface obj=new userinterface();
obj.show();
}
});
}
}
请告诉我我哪里做错了?如何在gui屏幕上显示输出?
感谢。
答案 0 :(得分:4)
您的问题是您在没有意识到的情况下覆盖了基本方法show()
,这样就无法显示JFrame。将此方法的名称更改为其他名称:
public void myShow() {
// String str = jTextField1.getText(); // not useful
jButton1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// Execute when button is pressed
System.out.println("You clicked the button,str");
}
});
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
// new userinterface().setVisible(true);
userinterface obj = new userinterface();
// obj.show();
obj.myShow();
obj.setVisible(true);
}
});
}
这是另一个原因,除非绝对必要,否则我们都应该努力不扩展类,因为这样做有时会导致很难调试错误。
我能够通过在整个代码中放置println并看到show()被调用来调试它,即使它没有被我明确调用。
答案 1 :(得分:0)
JFrame frame = new JFrame();
JPanel panel = new JPanel();
JLabel label = new JLabel("this is GUI boi");
frame.setSize(500, 500);
panel.add(label);
frame.add(panel);
frame.setVisible(true);
setVisible()
方法