如何使用Jbutton添加多个按钮

时间:2015-04-12 20:42:06

标签: java swing jframe jbutton grouplayout

我使用jbutton制作了这段代码并编译。但是,当我只运行此代码" buttoneone"出现了" quibutton"没有出现。这很奇怪,我无法理解为什么会这样。请帮忙。

import java.awt.EventQueue;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.GroupLayout;
import javax.swing.*;

public class SimpleEx extends JFrame {

  /**
   * Default constructor
   * Will be invoked when we create an instance of this class
   */
    public SimpleEx() {

        initializeUserInterface();
    }

   /**
    * Set up the window/frame just the way we want it
    */
    private void initializeUserInterface() {

      // set up the frame
        setTitle("Frame Title");
        setSize(400, 300);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);

      // create the buttons
        createButtons();

    }

    /**
     * In this method we'll create ALL the buttons we'll use in the application
     */
    private void createButtons(){
      // Create a button with the label "Quit" and 
        JButton quitButton = new JButton("Quit");
      // set up the action listener
        quitButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent event) {
                System.exit(0);
            }   
        });
          JButton buttonOne = new JButton("Button 1");
      // set up the action listener
        buttonOne.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent event) {

            }   
        });
      // place the button onto the window
        Container pane = getContentPane();
        GroupLayout gl = new GroupLayout(pane);
        GroupLayout g2 = new GroupLayout(pane);
        pane.setLayout(gl);
        pane.setLayout(g2);

        gl.setAutoCreateContainerGaps(true);
        g2.setAutoCreateContainerGaps(true);

        gl.setHorizontalGroup(gl.createSequentialGroup()
                .addComponent(quitButton)
        );

        gl.setVerticalGroup(gl.createSequentialGroup()
                .addComponent(quitButton)
        );
        g2.setHorizontalGroup(g2.createSequentialGroup()
                .addComponent(buttonOne)
        );

        g2.setVerticalGroup(g2.createSequentialGroup()
                .addComponent(buttonOne)
        );
     }

    /**
     * Main method called when the application starts up
     */
    public static void main(String[] args) {

      // Set up the GUI event queue
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
              // create the main frame/window and make it visible
              SimpleEx ex = new SimpleEx();
              ex.setVisible(true);
            }
        });
    }
}

1 个答案:

答案 0 :(得分:2)

本声明

pane.setLayout(g2);

替换包含退出按钮的布局gl,因为容器只能有一个布局管理器。你可以删除它并执行

gl.setHorizontalGroup(gl.createSequentialGroup()
    .addComponent(quitButton).addComponent(buttonOne));
gl.setVerticalGroup(gl.createParallelGroup()
    .addComponent(quitButton).addComponent(buttonOne));