我需要你的帮助。我正在学习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);
}
}
}
}
答案 0 :(得分:0)
您的JDialog没有parent specified。尝试像这样给你的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;
}