0

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

谢谢。

4

2 回答 2

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() 被调用来调试它,即使它没有被我显式调用。

于 2012-04-21T17:31:17.010 回答
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. 你必须调用setVisible()JFrame 的方法
  3. 您必须设置 JFrame 的宽度和高度
  4. 您已将组件添加到父组件(例如将标签添加到面板,将面板添加到框架)
于 2020-07-29T10:30:09.303 回答