我有一个应用程序,当你运行它时,你需要一个面板来添加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
答案 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。这不是它的目的。