[英]Open another window with Jframe in Java
我需要您的帮助。我正在学习Java Swing,并且一直尝试使用以下代码从主窗口中打开另一个窗口:
我不知道我做错了什么,因为当我单击下拉菜单Opciones中的信息按钮时,新窗口没有出现。
*/
public class Ventana1 extends JFrame {
JButton borrar, anadir,cerrar,modificar;
JFrame panel1;
public Ventana1() {
panel1=new JFrame();
setVisible(true);
setSize(new Dimension(500,500));
setLocation(200,200);
// setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
crearMenu();
}
public void crearMenu(){
JMenuBar barra=new JMenuBar();
JMenu archi=new JMenu("Archivos");
JMenu menu=new JMenu("Opciones");
JMenuItem añPalabra=new JMenuItem("Añadir ");
añPalabra.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JDialog mydialog = new JDialog();
mydialog.setSize(new Dimension(400,100));
mydialog.setTitle("I got you! You can't click on your JFrame now!");
// mydialog.setModalityType(Dialog.ModalityType.APPLICATION_MODAL); // prevent user from doing something else
mydialog.setVisible(true);
}
});
JMenuItem info=new JMenuItem("Informacion");
info.addActionListener(new escuchadorAniadirPalabra());
menu.add(añPalabra);
menu.add(info);
JMenuItem ayuda=new JMenuItem("Ayuda");
// ayuda.addActionListener(new escuchadorAyuda());
menu.add(ayuda);
barra.add(archi);
barra.add(menu);
this.setJMenuBar(barra);
}
public void panelDibujo(){
JFrame panel=new JFrame();
setVisible(true);
setSize(new Dimension(300,300));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
anadir=new JButton();
anadir.setText("Add");
panel.add(anadir);
// panel.add(anadir,JPanel.CENTER_ALIGNMENT);
// TitledBorder ti= new TitledBorder("Dibujo");
// panel.setBorder(ti);
// return panel;
}
class escuchadorAniadirPalabra implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
// String cadena=JOptionPane.showInputDialog("Introduzca la Palabra que quiera añadir");
// palabras.add(cadena);
try {
System.out.println("haha");
panelDibujo();
} catch (Exception ex) {
Logger.getLogger(Ventana1.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
您的JDialog没有指定父对象 。 尝试像这样将您的JFrame实例作为所有者。
JDialog mydialog = new JDialog(REFERENCE_TO_THE_JFRAME);
作为帮助,您可能需要像这样更改代码
public class Ventana1 extends JFrame implements ActionListener{
JButton borrar, anadir,cerrar,modificar;
JFrame panel1;
public Ventana1() {
panel1=new JFrame();
setVisible(true);
setSize(new Dimension(500,500));
setLocation(200,200);
// setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
crearMenu();
}
@Override
public void actionPerformed(ActionEvent e) {
JDialog mydialog = new JDialog(this);
mydialog.setSize(new Dimension(400,100));
mydialog.setTitle("I got you! You can't click on your JFrame now!");
// mydialog.setModalityType(Dialog.ModalityType.APPLICATION_MODAL); // prevent user from doing something else
mydialog.setVisible(true);
}
public void crearMenu(){
JMenuBar barra=new JMenuBar();
JMenu archi=new JMenu("Archivos");
JMenu menu=new JMenu("Opciones");
JMenuItem añPalabra=new JMenuItem("Añadir ");
añPalabra.addActionListener(this);
JMenuItem info=new JMenuItem("Informacion");
info.addActionListener(new escuchadorAniadirPalabra());
menu.add(añPalabra);
menu.add(info);
JMenuItem ayuda=new JMenuItem("Ayuda");
// ayuda.addActionListener(new escuchadorAyuda());
menu.add(ayuda);
barra.add(archi);
barra.add(menu);
this.setJMenuBar(barra);
}
public void panelDibujo(){
JFrame panel=new JFrame();
setVisible(true);
setSize(new Dimension(300,300));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
anadir=new JButton();
anadir.setText("Add");
panel.add(anadir);
// panel.add(anadir,JPanel.CENTER_ALIGNMENT);
// TitledBorder ti= new TitledBorder("Dibujo");
// panel.setBorder(ti);
// return panel;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.