0

我制作了一个 Java swing 应用程序。我的主班做所有的SwingUtilities.invokeLater(new Runnable()事情。

我用过的第二堂课:

JPanel container = (JPanel) getContentPane();

然后通过调用添加所有位..

container.add([name of component]

我现在想将整个“应用程序”放入JSplitPane. 因此,我希望我的应用程序在一侧,而其他东西在右侧。

我该怎么做呢?

    public class one{
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
            JFrame f = new App("main");
            f.setSize(1920,1080);
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.setVisible(true);
}


public class App extends JFrame {
        SuppressWarnings("empty-statement")
        public App(String title) {
        super(title);
        JPanel container = (JPanel) getContentPane();

        container.setLayout(new GridBagLayout());
        GridBagConstraints c = new GridBagConstraints();
        JButton new button = new JButton("new");
        c.gridx = 0;
        c.gridy = 0;
        c.gridwidth = 2;
        //ENTER LOTS OF CONSTRAINTS
        container.add(new, c);

        JButton next to button = new JButton("next to");
        c.gridx = 1;
        c.gridy = 1;
        c.gridwidth = 2;
        //ENTER LOTS OF CONSTRAINTS
        container.add(new, c);

        //I HAVE LOTS OF SWING COMPONENTS AND BUTTONS about 30

}

我希望所有这些都在拆分窗格的左侧?

我该怎么做呢?

4

1 回答 1

5
  1. 不要从 扩展JFrame,您不会添加任何功能,而是将所有应用程序组件和逻辑移动到单独的JPanel
  2. 创建一个实例JSplitPane,将“主”面板添加到它,将辅助窗格添加到它
  3. 创建 a 的实例JFrame,将拆分窗格添加到其中...

更新

在此处输入图像描述

public class TestSplitPane {

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

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

                JSplitPane pane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
                pane.setLeftComponent(new MainPane());
                pane.setRightComponent(new JLabel("On the right"));

                JFrame frame = new JFrame();
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new BorderLayout());
                frame.add(pane);
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

    public class MainPane extends JPanel {

        public MainPane() {
            setLayout(new GridBagLayout());
            GridBagConstraints c = new GridBagConstraints();
            JButton newButton = new JButton("new");
            c.gridx = 0;
            c.gridy = 0;
            c.gridwidth = 2;
            //ENTER LOTS OF CONSTRAINTS
            add(newButton, c);

            JButton next = new JButton("next to");
            c.gridx = 1;
            c.gridy = 1;
            c.gridwidth = 2;
            //ENTER LOTS OF CONSTRAINTS
            add(next, c);
        }
    }
}
于 2012-11-19T01:26:47.683 回答