问题描述
当我调用内部类JFrame
时,它被调用并显示,但是外部类JFrame
没有隐藏.在这里,我提供了我的代码.具体来说,我正在尝试填写表格,然后我想预览一下我写的表格.
When i am calling the inner class JFrame
, it is called and it is displaying, but the outer class JFrame
is not hiding. here i am providing my code.To be very specific, I am trying to fill a form and then i want to preview the form what i have written.
package com.vote.rmc;
public class LRegister extends JFrame implements ActionListener {
final public JFrame rframe = new JFrame();
JLabel
public LRegister() {
rframe.setSize(800, 600);
rframe.setLocationRelativeTo(null);
cp = getContentPane();
cp.setLayout(null);
setSize(550, 300);
rframe.setTitle("User Registration Form");
cp.setBackground(new Color(140, 180, 180));
JTextArea plainTextArea = new JTextArea();
JScrollPane scrollPanePlain = new JScrollPane(plainTextArea);
cp.add(scrollPanePlain);
scrollPanePlain.setBounds(150, 250, 150, 100);
scrollPanePlain.setVisible(true);
CFirstName = new JLabel("First Name");
CLastName = new JLabel("Last Name");
DOB = new JLabel("Date Of Birth");
FatherName = new JLabel("Father's Name");
PhoneNumber = new JLabel("Phone Number");
address = new JLabel("Address");
departmentName = new JLabel("Department Name");
Year = new JLabel("Year");
EmailID = new JLabel("Email ID");
jpic = new JLabel("Upload your Picture");
l = new JLabel("Candidates Information");
jlmsg = new JLabel("", JLabel.CENTER);
Cfname = new JTextField(10);
Clname = new JTextField(10);
birth = new JTextField(10);
Fname = new JTextField(10);
PhNum = new JTextField(10);
addrss = new JTextField(10);
deptName = new JTextField(10);
Yr = new JTextField(10);
mailID = new JTextField(10);
jbsubmit = new JButton("PREVIEW");
jbrowse = new JButton("BROWSE PICTURE");
jbexit = new JButton("CLOSE");
l.setBounds(270, 10, 250, 35);
CFirstName.setBounds(10, 50, 100, 35);
Cfname.setBounds(150, 55, 150, 25);
CLastName.setBounds(400, 50, 500, 35);
Clname.setBounds(550, 50, 150, 25);
DOB.setBounds(10, 100, 100, 35);
birth.setBounds(150, 105, 150, 25);
FatherName.setBounds(10, 150, 100, 35);
Fname.setBounds(150, 155, 150, 25);
PhoneNumber.setBounds(400, 100, 500, 35);
PhNum.setBounds(550, 100, 150, 25);
departmentName.setBounds(400, 150, 500, 35);
deptName.setBounds(550, 150, 150, 25);
EmailID.setBounds(10, 190, 150, 50);
mailID.setBounds(150, 200, 150, 25);
address.setBounds(10, 250, 100, 35);
addrss.setBounds(150, 250, 150, 100);
Year.setBounds(400, 200, 500, 35);
Yr.setBounds(550, 200, 150, 25);
jbsubmit.setBounds(150, 380, 92, 25);
//jbnew.setBounds(300,380,92,25);
jbexit.setBounds(450, 380, 92, 25);
jpic.setBounds(400, 250, 500, 35);
jbrowse.setBounds(550, 253, 150, 25);
jbsubmit.addActionListener(this);
//jbnew.addActionListener(this);
jbrowse.addActionListener(this);
jbexit.addActionListener(this);
cp.add(jpic);
cp.add(Cfname);
cp.add(CFirstName);
cp.add(CLastName);
cp.add(DOB);
cp.add(EmailID);
cp.add(FatherName);
cp.add(Clname);
cp.add(Fname);
cp.add(departmentName);
cp.add(deptName);
cp.add(Year);
cp.add(birth);
cp.add(Fname);
cp.add(PhNum);
cp.add(addrss);
cp.add(Yr);
cp.add(mailID);
cp.add(DOB);
cp.add(PhoneNumber);
cp.add(address);
cp.add(jbsubmit);
//cp.add(jbnew);
cp.add(jbexit);
cp.add(jbrowse);
cp.add(l);
rframe.add(cp);
rframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
rframe.setVisible(true);
}
public void actionPerformed(ActionEvent ae) {
String action = ae.getActionCommand();
if (action == "PREVIEW") {
new B();
rframe.setVisible(false);
}
if (action == "CLOSE") {
rframe.setVisible(false);
}
if (action == "BROWSE PICTURE") {
if (ae.getSource() == jbrowse) {
analizepath();
rframe.setVisible(true);
}
}
}
private File getFile() {
JFileChooser filechooser = new JFileChooser();
filechooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
@SuppressWarnings("unused")
int result = filechooser.showOpenDialog(this);
File filename = filechooser.getSelectedFile();
if ((filename == null) || (filename.getName().equals(""))) {
JOptionPane.showMessageDialog(this, "invalid filename", "invalidfilename", JOptionPane.ERROR_MESSAGE);
}
return filename;
}
public void analizepath() {
File name = getFile();
path = name.getAbsolutePath();
picture = new ImageIcon(path);
pic = new File(path);
try {
inputStream = new FileInputStream(pic);
} catch (Exception d) {
System.out.println(d);
}
System.out.print(path);
}
class B {
JFrame frame = new JFrame();
public B() {
B.this.frame.setSize(800, 600);
B.this.frame.setLocationRelativeTo(null);
cp = getContentPane();
cp.setLayout(null);
setSize(550, 300);
B.this.frame.setTitle("Preview Form");
cp.setBackground(new Color(140, 180, 180));
JTextField c = LRegister.this.Cfname;
String cfn = c.getText();
System.out.println(cfn);
CFirstName = new JLabel(cfn);
CLastName = new JLabel("Last Name");
DOB = new JLabel("Date Of Birth");
FatherName = new JLabel("Father's Name");
PhoneNumber = new JLabel("Phone Number");
address = new JLabel("Address");
departmentName = new JLabel("Department Name");
Year = new JLabel("Year");
EmailID = new JLabel("Email ID");
jpic = new JLabel("Your Picture");
l = new JLabel("Preview Your Form Before Submitting");
jlmsg = new JLabel("", JLabel.CENTER);
l.setBounds(270, 10, 250, 35);
CFirstName.setBounds(10, 50, 100, 35);
CLastName.setBounds(400, 50, 500, 35);
DOB.setBounds(10, 100, 100, 35);
FatherName.setBounds(10, 150, 100, 35);
PhoneNumber.setBounds(400, 100, 500, 35);
departmentName.setBounds(400, 150, 500, 35);
EmailID.setBounds(10, 190, 150, 50);
address.setBounds(10, 250, 100, 35);
Year.setBounds(400, 200, 500, 35);
jpic.setBounds(400, 250, 500, 35);
cp.add(jpic);
cp.add(CFirstName);
cp.add(CLastName);
cp.add(DOB);
cp.add(EmailID);
cp.add(FatherName);
cp.add(departmentName);
cp.add(Year);
cp.add(DOB);
cp.add(PhoneNumber);
cp.add(address);
cp.add(l);
frame.repaint();
B.this.frame.add(cp);
B.this.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
B.this.frame.setVisible(true);
}
}
推荐答案
您正在创建JFrame
的多个不同实例,它们彼此之间没有连接...
You're creating multiple different instance of JFrame
which have no connection to each other...
public class LRegister extends JFrame implements ActionListener {
final public JFrame rframe = new JFrame();
LRegister
是JFrame
,在其上(据我所知,您可以在其中构建UI).但是,然后您尝试更改rframe
的可见性状态?
LRegister
is a JFrame
, onto which (from near as I can tell) you build you UI. But then you try and change the visibility state of rframe
?
您可以考虑使用 CardLayout
使用不同的框架,但这意味着您将需要开始使用布局管理器直接
最好先通读如何阅读比较Java中的字符串?和使用多个JFrame:良好或不良做法?
这篇关于调用内部类的JFrame并隐藏外部类的JFrame的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!