簡體   English   中英

如何從不同的類添加JPanel到JFrame

[英]How to add JPanel to JFrame from different classes

如何將JPanel添加到JFrame? 這讓我很困惑。 我想將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();
    mainJFrame.setLayout(BorderLayout());
    mainJFrame.setVisible(true);        
    mainJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    mainJFrame.setSize(600,400);
    mainJFrame.setVisible(true); 
    mainJFrame.setLayout(new BorderLayout());
    mainJFrame.setTitle("Travel Agent System");
    mainJFrame.setBackground(Color.BLUE);
    timeObject.selectButton();
}
}

時間

    import javax.swing.JOptionPane;

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

public class Time{

  public static void selectButton()
  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);

  }

看看這個來源。 請注意評論。

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

將JFrame對象傳遞給selectButton():

timeObject.selectButton(mainJFrame);

然后使用該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的CENTER中。

這是一個很好的例子,它實現了一個JFrame類,然后將JPanels添加到JFrame和其他JPanels。

鏈接到另一個StackOverflow問題/答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM