Мой JButton не реагирует с ActionListener и actionPerformed - PullRequest
0 голосов
/ 20 мая 2019

как часть моего проекта, я написал эту часть кода, которая должна выполнять действие при нажатии кнопки. Он работал правильно, пока я не добавил новый код, то есть переменную, установленную на "". Теперь это не сработало. Я имею в виду, что код не ждет, пока кнопка не будет нажата (я также поставил флажок, написав «ОК» в консоли, но, похоже, действие actionPerformed не запускается. В чем дело ? Я не могу найти причину, почему он не должен ждать кнопку. Спасибо

con = new JPanel(); 
JButton bt = new JButton (" Insert ");
con.add (bt);
frame.add (con)
frame.setVisible(true);

bt.addActionListener(
    new ActionListener() {
        public void actionPerformed(ActionEvent e) {              
            radio =  rb.getSelection().getActionCommand();
            speed = "";     
        }
    }   
);

Я добавил еще немного кода, здесь ниже, надеюсь, это поможет. У меня все еще проблемы, метод ActionPerformed показывает ошибку. Подробности в коде

public class Creaframe extends JFrame implements ActionListener  {  
    public static JPanel con  = new JPanel();
    public static JFrame frame =new Creaframe();
    public static String radio = "";
    public static String speed = "";

    public static void main(String[] args)  {       
        frame.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
        frame.addWindowListener(new java.awt.event.WindowAdapter() {
            @Override
            public void windowClosing (java.awt.event.WindowEvent windowEvent) {
            if (JOptionPane.showConfirmDialog (frame, 
                     " Vuoi veramente Uscire ?") == 
                    JOptionPane.YES_OPTION)
                     {              
                    System.exit (0);
                      }
                    }   
                 });

        frame.setSize (1300, 900);
        frame.setLocation (200,100);
        con = new JPanel();
        con.setBackground(Color.YELLOW);

        public Creaframe  () {
    super (" My program " );
    menuBar = new JMenuBar();
    menuBar.add(makeFileMenu());
    menuBar.add(cerca());
    menuBar.add(trova());
    menuBar.add(excel());
    setJMenuBar(menuBar);
    pack(); 
}

    public void button () {

        JRadioButton rb1 = new JRadioButton ("CD");
        rb1.setActionCommand("CD");

        JRadioButton rb2 = new JRadioButton ("SACD"); 
        rb2.setActionCommand("SACD");

        JRadioButton rb3 = new JRadioButton ("Vinile",true);
        rb3.setActionCommand("Vinile");

        JRadioButton rb4 = new JRadioButton ("Vinile 180");
        rb4.setActionCommand("180");

        JRadioButton rb5 = new JRadioButton ("45 Giri");
        rb5.setActionCommand("Y");

        JRadioButton rb6 = new JRadioButton ("33 Giri",true);
        rb6.setActionCommand("N");

        ButtonGroup rb = new ButtonGroup();
        rb.add(rb1);
        rb.add(rb2);
        rb.add(rb3);
        rb.add(rb4);
        ButtonGroup rsp = new ButtonGroup();
        rsp.add(rb5);
        rsp.add(rb6);      

        con.add(rb1);
        con.add(rb2);
        con.add(rb3);
        con.add(rb4);
        JButton bt = new JButton (" Insert ");
        con.add (bt);
        bt.addActionListener(this);
        frame.add (con);
        txt11.setVisible(false);
        frame.setVisible(true); 

       @Override
           public void actionPerformed (ActionEvent event) {   

        **// this method is in fatal error, here below the message.        
        // Multiple markers at this line
        // - Syntax error on token "(", ; expected
        // - void is an invalid type for the variable 
        // actionPerformed
        //  - Syntax error on token ")", ; expected**               


             radio =  rb.getSelection().getActionCommand();
             speed = "";       
             System.out.println (radio + " ok");
}

1 Ответ

0 голосов
/ 20 мая 2019

Попробуйте приведенный ниже код,

, используя реализацию ActionListerner, вам не нужно многократно писать метод actionperformed, используя анонимный констурктор.У вас может быть один метод actionPerformed для обработки нескольких событий

1) реализует интерфейс ActionListener в вашем классе

    con = new JPanel(); 
    JButton bt = new JButton (" Insert ");
    con.add (bt);

    bt.addActionListener(this);
    frame.add (con)
    frame.setVisible(true);

    @Override
       public void actionPerformed(ActionEvent evt) {      
         radio =  rb.getSelection().getActionCommand();
         speed = "";       
         //extra code//
    }

, и вы можете удалить слушателя, используя метод ниже.

bt.removeActionListener(this);

РЕДАКТИРОВАТЬ Добавлен полный класс для вашей помощи, я считаю, что у вас есть правильная реализация вашего конструктора, чтобы получить MenuBar

проверить ссылку для создания JMenubar Нажмите здесь

public class Creaframe extends JFrame implements ActionListener  {  
    public static JPanel con  = new JPanel();
    public static JFrame frame =new Creaframe();
    public static String radio = "";
    public static String speed = "";
    ButtonGroup rb ;
    public static void main(String[] args)  {       
        frame.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
        frame.addWindowListener(new java.awt.event.WindowAdapter() {
            @Override
            public void windowClosing (java.awt.event.WindowEvent windowEvent) {
            if (JOptionPane.showConfirmDialog (frame, 
                     " Vuoi veramente Uscire ?") == 
                    JOptionPane.YES_OPTION)
                     {              
                    System.exit (0);
                      }
                    }   
                 });

        frame.setSize (1300, 900);
        frame.setLocation (200,100);
        con = new JPanel();
        //con.setBackground(Color.YELLOW);
    }

        public Creaframe  () {
            super (" My program " );
    //Your menubar related code ned to add here
           }


    public void button () {

        JRadioButton rb1 = new JRadioButton ("CD");
        rb1.setActionCommand("CD");

        JRadioButton rb2 = new JRadioButton ("SACD"); 
        rb2.setActionCommand("SACD");

        JRadioButton rb3 = new JRadioButton ("Vinile",true);
        rb3.setActionCommand("Vinile");

        JRadioButton rb4 = new JRadioButton ("Vinile 180");
        rb4.setActionCommand("180");

        JRadioButton rb5 = new JRadioButton ("45 Giri");
        rb5.setActionCommand("Y");

        JRadioButton rb6 = new JRadioButton ("33 Giri",true);
        rb6.setActionCommand("N");

        rb= new ButtonGroup();
        rb.add(rb1);
        rb.add(rb2);
        rb.add(rb3);
        rb.add(rb4);
        ButtonGroup rsp = new ButtonGroup();
        rsp.add(rb5);
        rsp.add(rb6);      

        con.add(rb1);
        con.add(rb2);
        con.add(rb3);
        con.add(rb4);
        JButton bt = new JButton (" Insert ");
        con.add (bt);
        bt.addActionListener(this);
        frame.add (con);
        frame.setVisible(true); 
    }

       @Override
           public void actionPerformed (ActionEvent event) { 
             radio =  rb.getSelection().getActionCommand();
             speed = "";       
             System.out.println (radio + " ok");
                            }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...