当我点击按钮java时没有任何反应

时间:2016-02-13 22:37:09

标签: java swing

我有一个应用程序,当你运行它时,你需要一个面板来添加3个值,然后按OK按钮继续。

我放了一个Click()方法但是当我按下OK时没有任何事情发生。

另外要提到的是,当我正在淹没工作但是当我将其导出为可执行jar时不是。

JFrame frame = new JFrame();
JLabel mlabel = new JLabel("Please provide xxxx",JLabel.CENTER);
JLabel uLabel = new JLabel("User ID:",JLabel.LEFT);
JPanel buttonField = new JPanel(new GridLayout (1,3));
JPanel userArea =  new JPanel(new GridLayout (0,3));


frame.setLayout(new GridLayout (0,1));
buttonField.setLayout(new FlowLayout());
JButton confirm =new JButton("OK");
confirm.addMouseListener((MouseListener) new mouseClick());
buttonField.add(confirm);

App.insertText = new JTextField(20);
frame.add(mlabel);
userArea.add(uLabel);
userArea.add(insertText);
frame.add(buttonField);
frame.setSize(300,600);
App.credGet = false;
frame.setVisible(true); 

和点击:

public void mouseClicked(MouseEvent e) {
    App.un = App.insertText.getText();
    App.project = ((JTextComponent) App.insertProject).getText();
    //App.pw = char[] App.insertPass.getPassword();
    char[] input = App.insertPass.getPassword();
    App.pw = "";
    for (int i1 = 0; i1 < input.length; i1++){
        App.pw = App.pw + input[i1];
    }
} 

public void mouseEntered(MouseEvent arg0) {
    // TODO Auto-generated method stub

}

public void mouseExited(MouseEvent arg0) {
    // TODO Auto-generated method stub

}

public void mousePressed(MouseEvent arg0) {
    // TODO Auto-generated method stub

3 个答案:

答案 0 :(得分:2)

confirm.addMouseListener((MouseListener) new mouseClick());

我认为mouseClick是您在下面示例中发布的课程。为什么要把它投到MouseListener?它没有实现MouseListener吗?

无论如何,你最好用ActionListener替换它(匿名类在这里可以正常使用),例如。

confirm.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        ...         
    }
});

阅读Pros and cons of using ActionListener vs. MouseListener for capturing clicks on a JButton了解详情

答案 1 :(得分:1)

你应该这样做:

JButton button = new JButton("ButtonName");
//add button to frame
frame.add(button);    
//Add action listener to button
    button.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e)
        {
            //Execute when button is pressed
            System.out.println("You clicked the button");
        }
    });         

答案 2 :(得分:1)

您可以使用ActionListener使用类似的内容:

anyBtn.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        //Your Code Here
    }
});

或者你可以使用Lambda,如下所示:

anyBtn.addActionListener(e ->
{
    //Your Code Here
});

你不应该以这种方式使用MouseListener。这不是它的目的。