2016-05-24 5 views
0

Привет, я новичок в Java и немного потерял коды, которые я пытался написать. Он компилируется без ошибок, но все, что я добавил на панели не отображается на рамеДобавление JPanel из другого класса в JFrame При нажатии кнопки

Вот мой код:

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

    }  
} 

Это другой файл класс панели я хотел показать на 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);     

    } 
    } 

ответ

0

Я думаю, что вы хотите отобразить enter image description here

То, что вы сделали это вы добавили все вещи своим addingPanel но вы забыли добавить addingPanel сам.

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); 
    } 
    } 
+0

Это работает, спасибо большое –

0

у вас есть два кадра

  • MainFrame
  • AddingWindowFrame -> содержит AddingPanel

И при нажатии на кнопку вы только отображающей AddingWindowFrame (я предполагаю, что он должен отображаться где-то на заднем плане). Вместо этого вам нужно добавить AddingPanel непосредственно в currentFrame.

Mainframe.this.getContentPane().add(addingWindow); 

Но вы должны проверить, как использовать LayoutManagers

+0

Благодарим за отзыв моего сообщения. Да AddingWindowFrame отображает, но на переднем плане экрана. Что AddingWindowFrame я хочу добавить панель Класс –

Смежные вопросы