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);
}
}
You're creating multiple different instance of
JFrame
which have no connection to each other...LRegister
is aJFrame
, onto which (from near as I can tell) you build you UI. But then you try and change the visibility state ofrframe
?You may consider using a
CardLayout
instead of resorting to using different frames, but that would then mean you would need start using Layout Managers directlyIt would also be a good idea to have a read through How do I compare strings in Java? and The Use of Multiple JFrames: Good or Bad Practice?
In tour
actionPerformed()
, there's three differentif
statements that only triggers one frame action each. Is this your intention? If you want the outer frame to be not visible, should't you addouterFrame.setVisible(false);
?Add all of your
action == "PREVIEW"
should beaction.equals("PREVIEW")