java - paso - llamar jframe desde jbutton
Llamar a un JFrame de clase interna y ocultar el JFrame de clase externa (2)
Está creando varias instancias diferentes de JFrame
que no tienen conexión entre sí ...
public class LRegister extends JFrame implements ActionListener {
final public JFrame rframe = new JFrame();
LRegister
es un JFrame
, sobre el cual (de cerca, como puedo ver) construyes tu UI. ¿Pero luego intentas cambiar el estado de visibilidad de rframe
?
Puede considerar el uso de un CardLayout
lugar de recurrir al uso de marcos diferentes, pero eso significaría que necesitaría comenzar a usar los administradores de diseño directamente.
También sería una buena idea tener una lectura. ¿Cómo comparo cadenas en Java? y el uso de múltiples JFrames: ¿buena o mala práctica?
Cuando estoy llamando a la clase interna JFrame
, se llama y se muestra, pero la clase externa JFrame
no se oculta. aquí estoy proporcionando mi código. Para ser muy específico, estoy tratando de completar un formulario y luego quiero obtener una vista previa de lo que he escrito.
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);
}
}
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);
}
}
}
En el recorrido actionPerformed()
, hay tres declaraciones if
diferentes que solo activan una acción de cuadro cada una. ¿Es esta tu intención? Si desea que el marco externo no sea visible, no debe agregar outerFrame.setVisible(false);
?
Agregue toda su action == "PREVIEW"
debe ser action.equals("PREVIEW")