1

だから私は別の問題を抱えています.....

現在、GUIでBorderLayoutを使用しているため、jframeのサイズを変更すると、すべての内部コンポーネントもそれに合わせてサイズ変更されます。このサイズ変更機能を提供している間、GUIをどのように表示したいかで他のレイアウトを機能させることができませんでした。上部にはJMenuBarがあり、その下にはたくさんのボタンがあります。その下にJSplitPaneがあるはずですが、そこにあります。ただし、ボタンはJSplitPane内に含まれているようで、これは私の意図ではありません。したがって、分割ペイン内で何かが発生すると、マウスをボタンの上に移動するまでボタンが消えます。

レイアウトをnullに設定すると、サイズ変更機能が失われることを除いて、すべてがうまく機能します。これは良くありません。

画像を投稿しようとしましたが、私の担当者はまだ10歳ではないので、許可されません:(

助言がありますか?ボタンをJPanelに配置してから、jpanelを追加しようとしましたが、分割ペインがそれと重なっています。JToolBarと同じです。

アイテムを追加する順序は次のとおりです。

1)メニューバー

setJMenuBar(menuBar)

2)ボタン

getContentPane().add(btnZoomIn)

3)分割ペイン

getContentPane().add(splitPane)

その後、あなたが見る残りのもの

4

1 に答える 1

2

私にとってはうまくいくようです...

ここに画像の説明を入力してください

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);
            }
        });
    }

}
于 2012-12-06T05:30:33.397 に答える