繁体   English   中英

单击按钮时,从JFrame中的另一个类添加JPanel

[英]Adding JPanel from another class in JFrame When Button Clicked

嗨,我是Java的新手,在尝试编写的代码中有点迷失了。 它编译没有错误,但我在面板上添加的所有内容均未显示在框架上

这是我的代码:

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

    }
  }

你有两个框架

  • 主机
  • AddingWindowFrame->包含AddingPanel

当您单击按钮时,您只是在显示AddingWindowFrame(我猜它应该显示在背景中的某个位置)。 相反,您需要将AddingPanel直接添加到currentFrame中。

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

但是您应该检查如何使用LayoutManagers

我想你要展示 在此处输入图片说明

您所做的是将所有内容添加到了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);
    }
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM