Reputation: 29
Hi i'm new to Java and kinda lost in the codes i tried to write. It compiles with no error but everything i added on panel don't show up on the frame
Here's my code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import java.awt.image.*;
import javax.imageio.*;
import java.io.*;
public class Mainframe extends JFrame {
private AddingWindow addingWindow = new AddingWindow(); //Passing AddingWindow Class to the Main Class as statement
private JFrame addingWindowFrame = new JFrame(); //This is the frame i wanted to add the JPanel with its labels and buttons
public Mainframe() {
JPanel controlPanel = new JPanel();
controlPanel.setLayout(new GridLayout(1 ,1));
JButton addingBtn = new JButton("Add");
controlPanel.add(addingBtn);
//Add controlPanel to the mainframe
setLayout(new BorderLayout());
add(controlPanel, BorderLayout.WEST);
//Set showAddingPanel button event
addingBtn.addActionListener (new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
addingWindowFrame.setVisible(true);
}
});
addingWindowFrame.pack();
addingWindowFrame.setTitle("Title);
addingWindowFrame.setSize(600, 400);
addingWindowFrame.setResizable(false);
addingWindowFrame.setLocationRelativeTo(null);
addingWindowFrame.getContentPane().add(addingWindow); //Here i'm adding JPanel Class to the Frame
}
//Main method
public static void main(String[] args) {
JFrame mainFrame = new Mainframe();
mainFrame.setTitle("\"Mainframe\"");
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainFrame.setVisible(true);
mainFrame.setExtendedState(Frame.MAXIMIZED_BOTH);
mainFrame.setMinimumSize(new Dimension(800, 600));
}
}
This is the other panel Class file i wanted to show up on the AddingWindowFrame
import java.awt.*;
import javax.swing.*;
public class AddingWindow extends JPanel {
AddingWindow() {
JPanel addingPanel = new JPanel();
addingPanel.setLayout(new GridLayout(2, 2));
JLabel fullNameLbl = new JLabel("Name");
JTextField fullNameTextField = new JTextField(25);
JButton addBtn = new JButton("add");
JButton cancelBtn = new JButton("cancel");
//Adding buttons, label and textfield to addingPanel
addingPanel.add(fullNameLbl);
addingPanel.add(fullNameTextField);
addingPanel.add(addBtn);
addingPanel.add(cancelBtn);
}
}
Upvotes: 0
Views: 1384
Reputation: 1831
What you did is you added all the things to your addingPanel but you forgot to add the addingPanel itself.
import java.awt.*;
import javax.swing.*;
public class AddingWindow extends JPanel {
AddingWindow() {
JPanel addingPanel = new JPanel();
addingPanel.setLayout(new GridLayout(2, 2));
JLabel fullNameLbl = new JLabel("Name");
JTextField fullNameTextField = new JTextField(25);
JButton addBtn = new JButton("add");
JButton cancelBtn = new JButton("cancel");
//Adding buttons, label and textfield to addingPanel
addingPanel.add(fullNameLbl);
addingPanel.add(fullNameTextField);
addingPanel.add(addBtn);
addingPanel.add(cancelBtn);
add(addingPanel);
}
}
Upvotes: 1
Reputation: 1533
You have two frames
And when you click on the button you are just displaying the AddingWindowFrame(I guess it should displayed somewhere in the background). Instead you need to add the AddingPanel directly to the currentFrame.
Mainframe.this.getContentPane().add(addingWindow);
But you should check how to use LayoutManagers
Upvotes: 1