JDialog dialog = new JDialog(frame);
它要有一个Frame作为父窗口,才能实现它没关的时候Frame用不了,如何让Applet也能实现这种效果

解决方案 »

  1.   

    楼主可以先写一个applet,再写一个继承JDialog的类,在这个类的构造方法开头加上super (jFrame,"hihi",true),其中true表示打开时父窗体停止运行最后在父窗体中加入      ClearAll ca = new ClearAll(new JFrame());
            ca.setBounds(300,300,480,150);
            ca.setVisible(true);JDialog的代码如下package epigraphdesign;import javax.swing.JComponent;
    import javax.swing.*;
    import java.awt.*;
    import java.applet.Applet;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;/**
     * <p>Title: </p>
     *
     * <p>Description: </p>
     *
     * <p>Copyright: Copyright (c) 2006</p>
     *
     * <p>Company: </p>
     *
     * @author not attributable
     * @version 1.0
     */
    public class ClearAll extends JDialog {    JPanel jPanel1 = new JPanel();
        JButton jButton1 = new JButton();
        JButton jButton2 = new JButton();
        JCheckBox jCheckBox1 = new JCheckBox();
        JCheckBox jCheckBox2 = new JCheckBox();
        JCheckBox jCheckBox3 = new JCheckBox();
        public ClearAll(JFrame jFrame) {
            super (jFrame,"hihi",true);
            try {
                jbInit();
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }    private void jbInit() throws Exception {
            this.setResizable(false);
            this.setTitle("清空选项");
            this.setLayout(null);
            jPanel1.setBackground(SystemColor.inactiveCaption);
            jPanel1.setBorder(BorderFactory.createEtchedBorder());
            jPanel1.setBounds(new Rectangle(10, 10, 361, 100));
            jPanel1.setLayout(null);        jButton2.addActionListener(new ClearAll_jButton2_actionAdapter(this));
            jButton1.addActionListener(new ClearAll_jButton1_actionAdapter(this));
            this.add(jPanel1);
            jCheckBox2.setBackground(SystemColor.inactiveCaption);
            jCheckBox2.setFont(new java.awt.Font("新宋体", Font.PLAIN, 12));
            jCheckBox2.setText("清空背面");
            jCheckBox2.setBounds(new Rectangle(121, 35, 85, 23));
            jCheckBox3.setBackground(SystemColor.inactiveCaption);
            jCheckBox3.setFont(new java.awt.Font("新宋体", Font.PLAIN, 12));
            jCheckBox3.setText("清空");
            jCheckBox3.setBounds(new Rectangle(222, 36, 85, 23));
            jPanel1.add(jCheckBox1);
            jPanel1.add(jCheckBox2);
            jPanel1.add(jCheckBox3);
            jCheckBox1.setBackground(SystemColor.inactiveCaption);
            jCheckBox1.setFont(new java.awt.Font("新宋体", Font.PLAIN, 12));
            jCheckBox1.setBounds(new Rectangle(22, 35, 85, 23));
            jCheckBox1.setText("清空正面");
            jButton2.setBounds(new Rectangle(384, 70, 71, 30));
            jButton2.setFont(new java.awt.Font("新宋体", Font.PLAIN, 12));
            jButton2.setText("取消");
            this.add(jButton1);
            this.add(jButton2);
            jButton1.setBounds(new Rectangle(384, 22, 71, 30));
            jButton1.setFont(new java.awt.Font("新宋体", Font.PLAIN, 12));
            jButton1.setText("确定");
            jCheckBox1.setSelected(true);
            jCheckBox2.setSelected(true);
            jCheckBox3.setSelected(true);
        }    public void jButton2_actionPerformed(ActionEvent e) {
            this.setVisible(false);
        }    public void jButton1_actionPerformed(ActionEvent e) {
            this.setVisible(false);
            if(jCheckBox1.isSelected())   {EpiApp.clear(EpiApp.jPanel7);EpiApp.jPanel7.repaint();}
            if(jCheckBox2.isSelected())   {EpiApp.clear(EpiApp.jPanel8);EpiApp.jPanel8.repaint();}
            if(jCheckBox3.isSelected())   {EpiApp.clear(EpiApp.jPanel10);EpiApp.jPanel10.repaint();}
        }
    }
    class ClearAll_jButton2_actionAdapter implements ActionListener {
        private ClearAll adaptee;
        ClearAll_jButton2_actionAdapter(ClearAll adaptee) {
            this.adaptee = adaptee;
        }    public void actionPerformed(ActionEvent e) {
            adaptee.jButton2_actionPerformed(e);
        }
    }
    class ClearAll_jButton1_actionAdapter implements ActionListener {
        private ClearAll adaptee;
        ClearAll_jButton1_actionAdapter(ClearAll adaptee) {
            this.adaptee = adaptee;
        }    public void actionPerformed(ActionEvent e) {
            adaptee.jButton1_actionPerformed(e);
        }
    }
      

  2.   

    Frame frame = (Frame)SwingUtilities.getAncestorOfClass(Frame.class, applet);
    JDialog dialog = new JDialog(frame, "title", true);
      

  3.   

    不写有frame的构造器的对话框就就行了,照样弹出来。JDialog d = new JDialog();