Java Window Builder错误

时间:2015-04-11 02:21:02

标签: java eclipse swing windowbuilder

刚刚听说过Window Builder,所以我正在处理一段代码,应用程序只需要你的名字并将其返回到标签中。

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JTextField;
import java.awt.BorderLayout;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JLabel;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;


public class app {

    private JFrame frame;
    private JTextField textField;
    private JLabel lblNewLabel;
    private static String text;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    app window = new app();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the application.
     */
    public app() {
        initialize();
    }

    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {
        frame = new JFrame();
        frame.setBounds(100, 100, 450, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        lblNewLabel = new JLabel(text);
        textField = new JTextField();
        textField.addKeyListener(new KeyAdapter() {
            @Override
            public void keyTyped(KeyEvent arg0) {
                text = textField.getText();
            }
        });
        frame.getContentPane().add(textField, BorderLayout.NORTH);
        textField.setColumns(10);

        JButton btnNewButton = new JButton("Check My Name");
        btnNewButton.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent arg0) {
                lblNewLabel.setText("Your name is " + text + "!");
            }
        });

        frame.getContentPane().add(btnNewButton, BorderLayout.CENTER);


        frame.getContentPane().add(lblNewLabel, BorderLayout.SOUTH);


    }

}

不要理解为什么它有时而不是一直有效。我是窗户建设者的新手,所以我很感激详细的答案。

为什么不起作用?你能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

  

不要理解为什么它有时而不是一直有效。

将来,要明确。什么有时有效,什么不起作用?告诉我们您产生错误的步骤。

public void mouseClicked(MouseEvent arg0) {
    lblNewLabel.setText("Your name is " + text + "!");

我猜测问题与上面的代码有关。当在同一鼠标点生成mousePressed和mouseReleased事件时,将生成mouseClicked事件。如果在两个事件之间移动鼠标甚至1个像素,则不会生成mouseClicked事件。

不要使用MouseListener。

相反,按钮被设计为与ActionListener一起使用。实施actionPerformed(...)方法并在按钮中添加ActionListener。监听器中的代码将是相同的。

阅读How to Write an ActionListener上的Swing教程中的部分以获取更多信息。

如果这不能解决您的问题,那么您的问题需要更新,并提供有关如何创建问题的更多信息。