java中隐藏的标签/面板

时间:2013-12-03 20:22:28

标签: java swing layout-manager

基本上,我试图这样做,所以屏幕底部有3个按钮,然后有一个标签,屏幕中间有单词。但是,我似乎无法同时在GUI中同时具有按钮和标签。我是一个初学者,对布局不太了解(即使我已经读过它们)所以任何帮助/指导都会对我无法看到标签和按钮的原因有所帮助。enter code here

    import java.awt.Dimension;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;

public class AWorldPanel implements ActionListener {

    /** Declaring all the menu items within the GUI **/
    private JMenuItem Fileitem1 = new JMenuItem("New configuration");
    private JMenuItem Fileitem2 = new JMenuItem("Open configuration file ");
    private JMenuItem Fileitem3 = new JMenuItem("Save");
    private JMenuItem Fileitem4 = new JMenuItem("Save As");
    private JMenuItem Fileitem5 = new JMenuItem("Exit");
    private JMenuItem Viewitem1 = new JMenuItem("Display configuration");
    private JMenuItem Viewitem2 = new JMenuItem("Edit configuration");
    private JMenuItem Viewitem3 = new JMenuItem("Info about Bugs");
    private JMenuItem Viewitem4 = new JMenuItem("Info about Map");
    private JMenuItem Edititem1 = new JMenuItem("Remove");
    private JMenuItem Edititem2 = new JMenuItem("Add");
    private JMenuItem Simulationitem1 = new JMenuItem("Simulation");
    private JMenuItem Helpitem1 = new JMenuItem("Info about application");
    private JMenuItem Helpitem2 = new JMenuItem("Info about author");
    private JLabel theLabel;
    private JPanel thePanel;
    JButton Run, Pause, Reset;
    JFrame GUI = new JFrame("Graphical User Interface");
    private static AWorld guiworld;

    public AWorldPanel() {
        /** Creating the menu **/
        JMenuBar menubar = new JMenuBar();
        JMenu File = new JMenu("File");
        JMenu View = new JMenu("View");
        JMenu Edit = new JMenu("Edit");
        JMenu Help = new JMenu("Help");

        /** welcome label **/
        theLabel = new JLabel("Hello ", JLabel.CENTER);
        theLabel.setVisible(true);
        theLabel.setVerticalTextPosition(JLabel.TOP);
        theLabel.setHorizontalTextPosition(JLabel.CENTER);

        /** file sub menus **/
        menubar.add(File);
        File.add(Fileitem1);
        File.add(Fileitem2);
        File.add(Fileitem3);
        File.add(Fileitem4);
        File.add(Fileitem5);

        menubar.add(View);
        View.add(Viewitem1);
        View.add(Viewitem2);
        View.add(Viewitem3);
        View.add(Viewitem4);

        menubar.add(Edit);
        Edit.add(Edititem1);
        Edit.add(Edititem2);

        menubar.add(Help);
        Help.add(Helpitem1);
        Help.add(Helpitem2);

        JPanel panel = new JPanel();
        panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
        panel.setBorder(new EmptyBorder(new Insets(300, 125, 100, 100)));

        Run = new JButton("Run");
        Pause = new JButton("Pause");
        Reset = new JButton("Reset");
        panel.add(Run);
        panel.add(Box.createRigidArea(new Dimension(0, 5)));
        panel.add(Pause);
        panel.add(Box.createRigidArea(new Dimension(0, 5)));
        panel.add(Reset);

        GUI.add(panel);
        GUI.add(theLabel);
        GUI.setJMenuBar(menubar);
    }

    private static void createAndShowGUI() {
        AWorldPanel newworld = new AWorldPanel();

        // Create the container
        JFrame frame = new JFrame("Graphical User Interface");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // changing the menu settings
        newworld.GUI.setLocation(300, 100);
        newworld.GUI.setSize(500, 500);
        newworld.GUI.setVisible(true);// Now the frame will appear on screen
    }

    public static void main(String args[]) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }
}

1 个答案:

答案 0 :(得分:3)

JFrame的默认布局管理器是BorderLayout。如果未指定约束,则组件将添加到BorderLayout.CENTER。您无法将多个组件添加到布局中的同一位置。尝试类似:

    GUI.add(panel, BorderLayout.SOUTH);
    GUI.add(theLabel, BorderLayout.CENTER);

此外,学习标准的Java命名约定。您将阅读的每本书,教程或示例都使用这些标准,因此不要构成您自己的约定。变量名do not以大写字符开头。