JPanel如何使按钮工作?

时间:2014-04-05 04:58:28

标签: java swing jpanel jbutton actionlistener

当你阅读这段代码时,你会发现我有一个动作事件可以正常工作,它会打开一个新的JPanel,显示将运行ballBounce的按钮,但是现在我仍然试图在该帧内获得一个工作按钮因为那个框架已经在actionEvent中,有什么帮助吗?

 public class MainJPanelOperation
    {
        public static void main(String[] a)
        {

            JPanel panel1 = new JPanel(new GridLayout(5, 10, 1, 1));
            JButton t1 = new JButton();
            JButton t2 = new JButton();
            JButton letsStart = new JButton("Start The Program!");
            JButton t3 = new JButton();
            JButton t4 = new JButton();
            //letsStart.setBounds(200,250,12,12);
            panel1.add(t1);
            panel1.add(t2);
            panel1.add(letsStart);
            panel1.add(t3);
            panel1.add(t4);
            final JFrame frame1 = new JFrame("Game");
            frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame1.add(panel1);
            frame1.setSize(1000,1000);
            frame1.setVisible(true);
            t1.setVisible(false);
            t2.setVisible(false);
            t3.setVisible(false);
            t4.setVisible(false);
            letsStart.setBackground(Color.yellow);
            panel1.setBackground(Color.black);
            letsStart.addActionListener(new ActionListener()
            {
                public void actionPerformed(ActionEvent e)
                {
                    System.out.println("panel 2 main menu intro online");
                    JPanel panelMM = new JPanel(new GridLayout(5, 10, 1, 0));
                    JButton MM1 = new JButton("BallBounce");
                    panelMM.add(MM1);
                    JFrame frameMM = new JFrame("Game/Main Menu");
                    frameMM.add(panelMM);
                    frameMM.setSize(1000,1000);
                    frameMM.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    frameMM.setVisible(true);
                    frame1.setVisible(false);
                }
            });//end of start sequence

        }
    }

2 个答案:

答案 0 :(得分:0)

试试这个:它在Action Listener中运行。

         JButton  MM1 = new JButton("BallBoe");
          MM1.addActionListener(new ActionListener()
            {
             public void actionPerformed(ActionEvent e)
            {
              System.out.println("panel 2");
            }
           });

class MainJPanelOperation implements ActionListener

您可以使用class MainJPanelOperation { static JButton MM1; //your code }

       MM1=new JButton("Button");
       MM1.addActionListener(this);

在Main()

之外写一个方法
    public void ActionPerformed(ActionEvent e)
   {
    if(e.getSource()==MM1)
    {
     System.out.print("");
    }
   if(e.getSource()==Buttonobject)
   {
     //your code for button Pressing Event
   }
  }

答案 1 :(得分:0)

JPanel panelMM = new JPanel(new GridLayout(5, 10, 1, 0));    
JButton MM1 = new JButton("BallBounce");
panelMM.add(MM1);
final JFrame frameMM = new JFrame("Game/Main Menu");
frameMM.add(panelMM);
frameMM.setSize(1000,1000);
frameMM.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

letsStart.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                System.out.println("panel 2 main menu intro 
                frameMM.setVisible(true);
                frame1.setVisible(false);
            }
        });

您可以将frameMM设为final,并且不需要在ActionListener中包含所有代码。