Swing 重新加载组件框架

Swing 重新加载组件框架,swing,Swing,我正在使用时间表预订应用程序,当我运行项目时,它会显示组件(总帧),但是我希望当按下按钮重新加载时,组件应该被吐出。(两个帧,其中一个帧在另一个帧的下方,被溅出) 根据您的描述,我认为您需要在单击按钮时将splitpane添加到框架中,或者您已经在框架中有了splitpane,并且希望在单击按钮时将面板添加到框架中 对于第一个选项,您可以执行以下操作: final JFrame frame = new JFrame("Split test"); frame.setSize(400

我正在使用时间表预订应用程序,当我运行项目时,它会显示组件(总帧),但是我希望当按下按钮重新加载时,组件应该被吐出。(两个帧,其中一个帧在另一个帧的下方,被溅出)

根据您的描述,我认为您需要在单击按钮时将splitpane添加到框架中,或者您已经在框架中有了splitpane,并且希望在单击按钮时将面板添加到框架中

对于第一个选项,您可以执行以下操作:

    final JFrame frame = new JFrame("Split test");
    frame.setSize(400, 400);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    final JPanel jPanel2 = new JPanel();
    JLabel jLabel = new JLabel("I am added by click on button");
    jPanel2.add(jLabel);

    final JPanel jPanel = new JPanel();
    JButton button = new JButton("Click me to add pane in split");
    jPanel.add(button);

    button.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent arg0) {
            JSplitPane pane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
            pane.add(jPanel);
            pane.add(jPanel2);
            pane.setDividerLocation(frame.getHeight()/2); // set Divider location.
            frame.remove(jPanel);
            frame.add(pane);
            frame.validate();
        }
    });

    frame.add(jPanel);
    frame.setVisible(true);
如果您遇到了后一个问题,请尝试以下方法:

    final JFrame frame = new JFrame("Split test");
    frame.setSize(400, 400);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    final JSplitPane pane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
    frame.add(pane);

    pane.setEnabled(false); // stop user from clicking on divider of split pane.

    final JPanel jPanel2 = new JPanel();
    JLabel jLabel = new JLabel("I am added by click on button");
    jPanel2.add(jLabel);

    final JPanel jPanel = new JPanel();
    JButton button = new JButton("Click me to add pane in split");
    jPanel.add(button);
    pane.add(jPanel);

    button.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent arg0) {
            pane.add(jPanel2);
            pane.setDividerLocation(frame.getHeight()/2); // set Divider location.
            pane.setEnabled(true); // let user change divider location.
        }
    });

    frame.setVisible(true);

是的,我用的是同一个框架,一个在另一个框架下,但我可以在第一次做这个项目的时候run@Harry我需要的喜悦,当按钮点击重新加载的两个帧一个接一个