2016-02-13 7 views
0

У меня есть приложение, и когда вы его запускаете, вы берете панель, чтобы добавить 3 значения, и после того, как вам нужно нажать кнопку OK, чтобы продолжить.ничего не происходит, когда я нажимаю кнопку java

Я поместил метод 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 
+4

1. Используйте правильный прослушиватель для нужной необходимости, и здесь никогда не используйте MouseListener таким образом, а вместо этого используйте ActionListener при прослушивании прессов JButton. 2. У вас есть необычные ссылки на поля, предлагающие возможное чрезмерное использование статических полей, но я действительно не могу сказать, основываясь на том, что вы опубликовали до сих пор. 3. Для лучшей помощи создайте и опубликуйте действительный [mcve]. –

ответ

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

Line

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

Вы можете либо использовать ActionListener, используя что-то вроде этого:

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

Или вы могли бы использовать Lambda, как показано здесь:

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

Вы не должны использовать MouseListener в том, что wa когда-либо. Это не то, для чего это предназначено.

+0

Я использовал оба ActionListener и Lambda, но я получаю ошибку. – ChristosV

+0

@ChristosV Отправьте свои вопросы в качестве нового вопроса и свяжите меня с ним. – Jonah

Смежные вопросы