Java 如何从不同的类向JFrame添加JPanel

Java 如何从不同的类向JFrame添加JPanel,java,swing,jframe,jpanel,layout-manager,Java,Swing,Jframe,Jpanel,Layout Manager,如何将JPanel添加到JFrame?这真让我困惑。我想将JPanel添加到JFrame中。我试过各种各样的方法,包括延长时间,但都没能奏效 事件 时间 下面是一个实现JFrame类,然后将JPanel添加到JFrame和其他JPanel的好例子 将JFrame对象传递给selectButton(): 然后使用该JFrame对象向其添加JPanel public static void selectButton(JFrame frame) { JButton timeButton =

如何将JPanel添加到JFrame?这真让我困惑。我想将JPanel添加到JFrame中。我试过各种各样的方法,包括延长时间,但都没能奏效

事件 时间
下面是一个实现JFrame类,然后将JPanel添加到JFrame和其他JPanel的好例子


将JFrame对象传递给selectButton():

然后使用该JFrame对象向其添加JPanel

public static void selectButton(JFrame frame)
  {
    JButton timeButton = new JButton("Time");
    JButton moneyButton = new JButton("Money");
    JButton hotelButton = new JButton("Hotel");
    JButton exitButton = new JButton("Exit");
    JPanel buttonPanel = new JPanel();
    buttonPanel.setBackground(Color.RED);
    buttonPanel.add(timeButton,moneyButtons,hotelButton,exitButton);
    frame.getContentPane().add(buttonPanel,BorderLayout.CENTER); // i've added to CENTER.
  }

这将把JPanel添加到JFrame的中心。

查看此源代码。请注意这些评论

import javax.swing.JOptionPane;
import java.awt.Color;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class events {

    public static void main (String args[]) {
        Time timeObject = new Time();

        JFrame mainJFrame;
        mainJFrame = new JFrame();
        // Coding by magic!
        //mainJFrame.setLayout(BorderLayout());
        mainJFrame.setLayout(new BorderLayout());
        mainJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // don't do this, just call pack() later
        //mainJFrame.setSize(600,400);
        mainJFrame.setLayout(new BorderLayout());
        mainJFrame.setTitle("Travel Agent System");
        mainJFrame.setBackground(Color.BLUE);

        timeObject.selectButton();
        mainJFrame.add(timeObject.getGUI());

        mainJFrame.pack();
        // should be last.
        mainJFrame.setVisible(true);
    }
}

class Time {

    private JPanel buttonPanel;

    // don't use static unless necessary - it is not necessary.
    //public static void selectButton() {
    public void selectButton() {
        JButton timeButton = new JButton("Time");
        JButton moneyButton = new JButton("Money");
        JButton hotelButton = new JButton("Hotel");
        JButton exitButton = new JButton("Exit");
        buttonPanel = new JPanel();
        buttonPanel.setBackground(Color.RED);
        buttonPanel.add(timeButton);
        buttonPanel.add(moneyButton);
        buttonPanel.add(hotelButton);
        buttonPanel.add(exitButton);
    }

    public JComponent getGUI() {
        return buttonPanel;
    }
}

这让我更加困惑,是否有任何简单的示例可以帮助我理解,比如我编写的代码用作示例,我将要创建的程序将有许多JPanel,因此我需要创建多个类
timeObject.selectButton(mainJFrame);
public static void selectButton(JFrame frame)
  {
    JButton timeButton = new JButton("Time");
    JButton moneyButton = new JButton("Money");
    JButton hotelButton = new JButton("Hotel");
    JButton exitButton = new JButton("Exit");
    JPanel buttonPanel = new JPanel();
    buttonPanel.setBackground(Color.RED);
    buttonPanel.add(timeButton,moneyButtons,hotelButton,exitButton);
    frame.getContentPane().add(buttonPanel,BorderLayout.CENTER); // i've added to CENTER.
  }
import javax.swing.JOptionPane;
import java.awt.Color;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class events {

    public static void main (String args[]) {
        Time timeObject = new Time();

        JFrame mainJFrame;
        mainJFrame = new JFrame();
        // Coding by magic!
        //mainJFrame.setLayout(BorderLayout());
        mainJFrame.setLayout(new BorderLayout());
        mainJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // don't do this, just call pack() later
        //mainJFrame.setSize(600,400);
        mainJFrame.setLayout(new BorderLayout());
        mainJFrame.setTitle("Travel Agent System");
        mainJFrame.setBackground(Color.BLUE);

        timeObject.selectButton();
        mainJFrame.add(timeObject.getGUI());

        mainJFrame.pack();
        // should be last.
        mainJFrame.setVisible(true);
    }
}

class Time {

    private JPanel buttonPanel;

    // don't use static unless necessary - it is not necessary.
    //public static void selectButton() {
    public void selectButton() {
        JButton timeButton = new JButton("Time");
        JButton moneyButton = new JButton("Money");
        JButton hotelButton = new JButton("Hotel");
        JButton exitButton = new JButton("Exit");
        buttonPanel = new JPanel();
        buttonPanel.setBackground(Color.RED);
        buttonPanel.add(timeButton);
        buttonPanel.add(moneyButton);
        buttonPanel.add(hotelButton);
        buttonPanel.add(exitButton);
    }

    public JComponent getGUI() {
        return buttonPanel;
    }
}