Как выполнить кнопку, нажав на другую кнопку java?

#java #click #mouse #execute #jbutton

#java #нажмите #мышь #выполнить #jbutton

Вопрос:

 menuBar = new JMenuBar();
// File Menu
JMenu fileMenu = new JMenu("File");
menuBar.add(fileMenu);
// File->New
JMenuItem newMenuItem = new JMenuItem("New");
frame.setJMenuBar(menuBar);
newMenuItem.addMouseListener(new MouseAdapter() {
    @Override
    public void mousePressed(MouseEvent arg0) {
        btnExample.setText("Clicked");
        btnExample.doClick();
    //---------->SOME HOW TO EXECUTE btnExample<---------//
}
});
fileMenu.add(newMenuItem);

final JButton btnExample = new JButton("SD");
frame.getContentPane().add(btnExample, "cell 4 0,growx,aligny top");
btnExample.addMouseListener(new MouseAdapter() {
    @Override
    public void mouseClicked(MouseEvent arg0) {
    spinnerForVar.setValue(4);//default value for spinner
    spinnerForFunc.setValue(4);//default value for spinner
    ...             
  }
});
  

Привет! Я надеюсь, что кто-нибудь сможет мне помочь. Вот в чем проблема: у меня есть пункт меню «Создать» и есть кнопка btnExample. Я хочу следующее: когда я нажимаю «Файл-> Создать», он выполняет btnExample. Мой код способен только изменять название кнопки и показывать визуальный эффект нажатия. Но как я могу на самом деле выполнить это?

Ответ №1:

У меня есть только один совет — не делайте этого. Не привязывайте компоненты GUI таким образом.

Если вы хотите, чтобы два компонента выполняли одну и ту же операцию, просто упакуйте эту операцию в метод и вызовите метод из обоих компонентов.

Кроме того, используйте ActionListener — вы уверены, что пользователь собирается нажать ее с помощью мыши, а не клавиатуры? что, если добавить ярлыки к этим кнопкам / компонентам?

Комментарии:

1. @alexey, это может сработать, но это не лучшее решение. Swing был разработан для использования действий. «Общий метод», о котором говорится в этом ответе, должен быть действием, а не методом, который вы добавляете в свой класс.

Ответ №2:

 private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
    //My button to click on it

    jButton1ActionPerformed(evt);//this is the call for the other button to execut it
}
  

Ответ №3:

Вы не должны использовать MouseListener для этого.

Вы должны использовать действия. Затем вы можете добавить действие как к JButton, так и к JMemuItem.

Прочитайте раздел из руководства по Swing о том, как использовать действия.

Ответ №4:

Удивительно, я нашел свое решение в ваших кодах!

         btnExample.doClick();
  

Это сделало работу за меня