如何在java中创建一个gui?

时间:2012-04-21 17:07:21

标签: java swing user-interface

我需要在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屏幕上显示输出?

感谢。

2 个答案:

答案 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);
  1. 您必须实例化所有gui组件
  2. 您必须调用JFrame的setVisible()方法
  3. 您必须设置JFrame的宽度和高度
  4. 您已将组件添加到父组件(例如,将标签添加到面板,将该面板添加到框架)