内側のjframeを呼び出していると呼び出されますが、外側のjframeは隠れていません。代わりにオーバーラップします。それで、これに対する解決策は何でしょう。ここから抜け出す方法はありますか?内部クラスのフレームを呼び出しているときに試したように、外部クラスのフレームも呼び出され、非表示になりません。
package com.exp.example;
import java.awt.Color;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
@SuppressWarnings("serial")
public class A extends JFrame implements ActionListener {
JFrame rframe = new JFrame();
JLabel CFirstName;
JTextField Cfname;
JButton jbsubmit;
Container cp;
public A() {
rframe.setSize(500, 200);
rframe.setLocationRelativeTo(null);
cp = getContentPane();
cp.setLayout(null);
setSize(550, 300);
rframe.setTitle("Outer Frame");
cp.setBackground(new Color(140, 180, 180));
CFirstName = new JLabel("First Name");
Cfname = new JTextField(10);
jbsubmit = new JButton("PREVIEW");
CFirstName.setBounds(10, 20, 100, 35);
Cfname.setBounds(150, 20, 150, 25);
jbsubmit.setBounds(190, 110, 92, 25);
cp.add(CFirstName);
cp.add(Cfname);
cp.add(jbsubmit);
jbsubmit.addActionListener(this);
rframe.add(cp);
rframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
rframe.setVisible(true);
}
public void actionPerformed(ActionEvent ae) {
String action = ae.getActionCommand();
if (action == "PREVIEW") {
/* Write the code here
* When we click on preview button the frame of outer class(class A) gets
* deactivated(closed) and inner frame, frame of inner class(class B) gets visible.
* it should not be overlapped.
*/
/* My Code */
new B();
rframe.setVisible(false);
}
}
public class B {
JFrame frm = new JFrame();
Container cp;
public B() {
frm.setSize(500, 200);
frm.setLocationRelativeTo(null);
cp = getContentPane();
cp.setLayout(null);
setSize(550, 300);
frm.setTitle("Inner Frame");
cp.setBackground(new Color(140, 180, 180));
JLabel cpn = new JLabel("hello");
cpn.setBounds(10, 20, 100, 35);
cp.add(cpn);
frm.add(cp);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setVisible(true);
}
}
public static void main(String[] args) {
new A();
}
}