大家好,有谁能够帮我一把
我做了一个JFrame想要在JFrame里面做一个登陆,登陆用得JDialog窗体,是JFrame中唯一的不能点别的这样一个JDialog窗格,验证数据库通过后想把JInternalFrame内嵌在先前的JFrame中,可是做完之后总也new 不出JInternalFrame,太可气了,不知道是哪里出了问题,拜托大家帮忙看一下,好吗,我非常的着急,谢谢各位!JFrame->JMenu点击->JDialog->验证成功->JInternalFrame(show不出来)
代码要贴吗?

解决方案 »

  1.   

    把你的JInternalFrame的显示代码从头到位贴出来!
    JInternalFrame不是简单的new一个就可以的,要得到ContentPane并往上添加
      

  2.   

    对啊,代码,这才是CSDN的共同语言!!!
      

  3.   

    你光new了,到底设置可见没有?
      

  4.   

    代码如下:----------------
    extendsMain.java
    ----------------
    class extendsMain
    {
    public static void main(String []args)
    {
    new extendsJFrame().show();
    }
    }
    ------------------
    extendsJFrame.java
    ------------------
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    public class extendsJFrame extends JFrame implements ActionListener
    {
    JMenuBar jmb=new JMenuBar();
    JMenu jm=new JMenu("菜单");
    JMenuItem jmi=new JMenuItem("问题");
    extendsJFrame()
    {
    super("弹出JDialog");
    Dimension dim=Toolkit.getDefaultToolkit().getScreenSize();
    this.setSize(dim.width,dim.height-25);
    this.setJMenuBar(jmb);
    jmb.add(jm);
    jm.add(jmi);
    jmi.addActionListener(this);
    }
    public void actionPerformed(ActionEvent e)
    {
    if(e.getSource()==jmi)
    {
    extendsJDialog jd=new extendsJDialog();
    jd.show();
    }
    }
    }
    -------------------
    extendsJDialog.java
    -------------------
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    public class extendsJDialog extends JDialog implements ActionListener
    {
    JButton jb=new JButton("打开JInternalFrame");
    extendsJDialog()
    {
    super(new JFrame(),"登陆",true);
    this.setBounds(300,200,0,0);
    this.getContentPane().add(jb);
    jb.addActionListener(this);
    this.pack();
    }
    public void actionPerformed(ActionEvent e)
    {
    if(e.getSource()==jb)
    {
    System.out.println("你是好人吗,骗我");
    extendsJInternalFrame jif=new extendsJInternalFrame();
    jif.show();//为什么show不出来?
    }
    }
    }
    --------------------------
    extendsJInternalFrame.java
    --------------------------
    import java.awt.*;
    import javax.swing.*;
    public class extendsJInternalFrame extends JInternalFrame
    {
    extendsJInternalFrame()
    {
    super("我是好人");
    this.setSize(200,200);
    System.out.println("别问我");
    this.pack();
    }
    }
      

  5.   

    通常,可将 JInternalFrame 添加到 JDesktopPane 中。UI 将特定于外观的操作委托给由 JDesktopPane 维护的 DesktopManager 对象。 java.lang.Object
      java.awt.Component
          java.awt.Container
              javax.swing.JComponent
                  javax.swing.JInternalFrame
    JInternalFrame
    不是顶层窗体  要放JDesktopPane 中才行
      

  6.   

    --------------------------
    extendsJInternalFrame.java
    --------------------------import java.awt.*;
    import javax.swing.*;
    public class extendsJInternalFrame extends JInternalFrame
    {
        private JFrame frame = new JFrame();
        private JDesktopPane pane = new JDesktopPane();
        
        extendsJInternalFrame()
        {
            super("我是好人");
            this.setSize(200,200);
            System.out.println("别问我");
            this.setResizable(true);
            
            pane.add(this);
            
            frame.add(pane);
            frame.setSize(600, 400);
            frame.setLocationRelativeTo(null);
            frame.setVisible(true);
            
        }
    }
      

  7.   

    很奇怪的设计  你要弹出个登陆框 就用dialog好了咯  
    干嘛还要费尽的再点一下 弹出另外一个
      

  8.   

    我的想法不知道复合逻辑不,关键是现在new不出JInternalFrame来
    很晕菜 -_-||
    大家出出主意,怎样做才好我想一个JFrame里面出个JDialog,点击后出现JInternalFrame..可这个JINternalFrame不知道怎么加到原JDesktopPane上 原先JFrame的JDesktopPane加上了JDialog,连数据库成功后我想把他关了,关闭JDialog,弹出JInternalFrame
      

  9.   

    传参我都试过了,
    把首个JDesktopPane传过去,关闭JDialog对话框传过来的JDesktopPane加上JInternalFrame,可JInternalFrame出不来!有谁能让它出来?给点建议 谢谢
      

  10.   

    insiku兄弟提供的方式和方法出不来!....-_-||
      

  11.   

    构造函数中再加一句
    setVisible(true) ;
    这样就可以了
      

  12.   

    我的想法不知道复合逻辑不,关键是现在new不出JInternalFrame来
    很晕菜 -_-||
    大家出出主意,怎样做才好我想一个JFrame里面出个JDialog,点击后出现JInternalFrame..可这个JINternalFrame不知道怎么加到原JDesktopPane上 原先JFrame的JDesktopPane加上了JDialog,连数据库成功后我想把他关了,关闭JDialog,弹出JInternalFrame=================================你的代码里 没有出现 JDesktopPane
    我这边测试过  没有问题
    不知道你那边抛什么异常?
      

  13.   

    import java.awt.Frame;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;import javax.swing.JButton;
    import javax.swing.JDesktopPane;
    import javax.swing.JDialog;
    import javax.swing.JFrame;
    import javax.swing.JInternalFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;public class JDesktopPaneExample
    {
        public static void main(String[] args)
        {
            final JFrame f = new JFrame("JDesktopPaneExample");        final JDesktopPane pane = new JDesktopPane();        JMenuBar jmb = new JMenuBar();
            JMenu jm = new JMenu("菜单");
            JMenuItem jmi = new JMenuItem("问题");        jmi.addActionListener(new ActionListener()
            {            public void actionPerformed(ActionEvent e)
                {
                    new CustomDialog((Frame) f, pane);
                }
            });        jmb.add(jm);
            jm.add(jmi);        f.setJMenuBar(jmb);
            f.add(pane);
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.setExtendedState(JFrame.MAXIMIZED_BOTH);
            f.setVisible(true);
        }
    }class CustomDialog extends JDialog
    {
        private JDesktopPane pane;
        private JButton      button;    public CustomDialog(Frame owner, JDesktopPane p)
        {
            super(owner, true);
            pane = p;        button = new JButton("Add JInternalFrame");
            button.addActionListener(new ActionListener()
            {            public void actionPerformed(ActionEvent e)
                {
                    JInternalFrame frame = new JInternalFrame();
                    frame.setSize(300, 300);
                    pane.add(frame);
                    frame.setVisible(true);
                }
            });        this.add(button);
            this.pack();
            this.setLocationRelativeTo(null);
            this.setVisible(true);
        }
    }