jonn
jonn

Reputation: 103

How to add JPanel to JFrame from different classes

How do i add the JPanel to JFrame? It is really confusing me. I want to add the JPanel to the JFrame. I've tried all sorts of things including the extend but I cant get it to work.

events

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

Time

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

  }

Upvotes: 3

Views: 18502

Answers (3)

Andrew Thompson
Andrew Thompson

Reputation: 168815

Have a look over this source. Note the comments.

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

Upvotes: 11

VishalDevgire
VishalDevgire

Reputation: 4268

Pass JFrame object to selectButton() :

timeObject.selectButton(mainJFrame);

Then use that JFrame object to add JPanel to it.

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

This will add JPanel to CENTER of your JFrame.

Upvotes: 3

user1901482
user1901482

Reputation: 11

Here is a good example of implementing a JFrame class and then adding JPanels to the JFrame and to other JPanels.

Link to another StackOverflow question/answer

Upvotes: 0

Related Questions