JSplitPane在BorderLayout中重叠JButton,但在layout为null时不重叠

时间:2012-12-06 05:02:25

标签: java swing jframe jsplitpane border-layout

所以我有另一个问题......

我目前在GUI中使用BorderLayout,因此当我调整jframe大小时,所有内部组件都会调整大小。在提供此调整大小功能时,我无法使用任何其他布局来处理GUI的外观。在顶部我有一个JMenuBar,在它下面我有一堆按钮。在下面,我应该有一个JSplitPane,它就在那里。但是,按钮似乎包含在JSplitPane中,这不是我的意图。因此,当分割窗内发生任何事情时,按钮会消失,直到我再次将鼠标移到它们上面。

当我将布局设置为null时,一切都很好,除了我失去了调整大小的能力,这是不好的。

尝试发布图片,但它不会让我,因为我的代表还没有在10 :(

有什么建议吗? 我已经尝试将按钮放入JPanel然后添加jpanel但是splitpane与之重叠。与JToolBar相同。

我添加项目的顺序是:

1)菜单栏

setJMenuBar(menuBar)

2)按钮

getContentPane().add(btnZoomIn)

3)拆分窗格

getContentPane().add(splitPane)

然后你看到的其他事情

1 个答案:

答案 0 :(得分:2)

似乎对我工作正常......

enter image description here

public class BadLayout06 {

    public static void main(String[] args) {
        new BadLayout06();
    }

    public BadLayout06() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                JMenuBar mb = new JMenuBar();
                mb.add(new JMenu("File"));

                JToolBar tb = new JToolBar();
                tb.add(new JButton("Zoom In"));
                tb.add(new JButton("Zoom Out"));
                tb.add(new JButton("Invert Image"));
                tb.add(new JButton("Toggle Highlights"));
                tb.add(new JButton("Save"));
                tb.add(new JButton("Cancel"));
                tb.setFloatable(false);

                JSplitPane spSub = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
                JTabbedPane tpLeft = new JTabbedPane();
                tpLeft.add("Table Entry", new JPanel());
                tpLeft.add("Form Entry", new JPanel());
                spSub.setLeftComponent(tpLeft);
                JTabbedPane tpRight = new JTabbedPane();
                tpRight.add("Field Help", new JPanel());
                tpRight.add("Image Navigation", new JPanel());
                spSub.setRightComponent(tpRight);


                JSplitPane spMain = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
                spMain.setLeftComponent(new JPanel());
                spMain.setRightComponent(spSub);


                JFrame frame = new JFrame("Testing");
                frame.setJMenuBar(mb);
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new BorderLayout());
                frame.add(tb, BorderLayout.NORTH);
                frame.add(spMain, BorderLayout.CENTER);
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

}