2016-05-24 37 views
0

嗨,我是新来的Java,有点遗失在我试图写的代码。它编译没有错误,但我加面板上的一切不框架从JFrame中的另一个类中添加JPanel点击按钮时

这里就显示出来是我的代码:

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

你有两个框架

  • 大型机
  • AddingWindowFrame - >包含AddingPanel

而当你点击按钮,你只是在显示AddingWindowFrame(我猜它应该在后台显示的地方)。相反,您需要直接将AddingPanel添加到currentFrame。

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

但你应该检查如何使用布局管理

+0

谢谢你回复我的文章。是的AddingWindowFrame显示在屏幕的前景上。那AddingWindowFrame我想添加面板类 –

相关问题