简体   繁体   中英

Java JButton it is not running truly

I added a jbutton with eclipse but it is not seeing correctly. How do I fix it?

this is screen shot : 在此处输入图片说明

public class GUITest // test class
{
    // block the warnings
    public static void main(String[] args) //main
    {
        System.out.println("start of main");
        /* stackoverflow want to add more details */
        JFrame frame = new JFrame();
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300,300);
        JPanel panel = new JPanel();
        frame.add(panel);
        JButton button = new JButton("Click here");
        panel.add(button);
        button.addActionListener(new Action());
        System.out.println("end of main");

/* stackoverflow want to add more details */ }

    public static class Action implements ActionListener //actionlistener
    {
        public void actionPerformed (ActionEvent e)
        { /* stackoverflow want to add more details */
            JFrame frame2 = new JFrame("Clicked");
            frame2.setVisible(true);
            frame2.setSize(200,200);
            JLabel label = new JLabel("You clicked me!");
            JPanel panel = new JPanel();
            frame2.add(panel);
            panel.add(label); // some more details

        }
    }   
}

I have used this and It will working fine. Can you please check your Graphics Driver or other things.

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Ashwin Parmar
 */
public class GUITest {
    public static void main(String[] args) {
        System.out.println("Start");
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300, 300);
        JPanel panel = new JPanel();
        frame.add(panel);
        JButton button = new JButton("Click here");
        panel.add(button);
        button.addActionListener(new Action());
        frame.setVisible(true);
        System.out.println("End");
    }

    public static class Action implements ActionListener{

        @Override
        public void actionPerformed(ActionEvent ae) {
            //throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
            JFrame frame2 = new JFrame("Clicked");
            frame2.setSize(200,200);
            JLabel label = new JLabel("You have clicked me!");
            JPanel panel = new JPanel();
            frame2.add(panel);
            panel.add(label);
            frame2.setVisible(true);
        }

    }

}
  • Always create and modify the UI from within the context of the Event Dispatching Thread
  • Wherever possible, call setVisible last, after you have established the basic UI. You will be required to call revalidate and repaint if you add components after the window is made visible.

For example...

public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        @Override
        public void run() {
            try {
                UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
            } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                ex.printStackTrace();
            }

            JFrame frame = new JFrame("Testing");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            JPanel panel = new JPanel();
            frame.add(panel);
            JButton button = new JButton("Click here");
            panel.add(button);
            button.addActionListener(new Action());             
            frame.pack();
            frame.setLocationRelativeTo(null);
            frame.setVisible(true);
        }
    });
}

Do the same thing within your ActionListener .

See Initial Threads for more details

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM