import java.lang.*;
import javax.swing.*;
import java.awt.*;public class myFrame extends JFrame
{
  public myFrame()
  {
   this.setBounds(0,0,250,210);
   this.setBackground(Color.pink);
   //this.setEnabled(false);
   this.setVisible(true);
   }
   public static void main(String [] args)
  {
    myFrame jinternalframe=new myFrame();
    jinternalframe.setEnabled(false);
  }

}这是我临时为你写的一个程序,你可以copy一下,然后看看运行结果就行了!
注意你copy后,你的java文件名必须要和我的一样的,即myFrame.java
这里有两种方法可以实现jinternalfame不可用!
第一种是我程序中用//表示的那一句!
第二种是在main函数中创建对象就行!
两种方法你可以任意选一个!

解决方案 »

  1.   

    请大家看清楚:是Jinternalframe 类的禁用问题,不是jframe!!!!!!!!!!!
      

  2.   

    我也看错了...晕掉..确实用同种方法.JFRAME可以实现...
    但JINTERNALFRAME不可以...
    不过我想知道楼主为什么要禁用呢.....
      

  3.   

    比如:有一个jinternalframe,主要是学生列表。我想选中一个学生的进行修改,这样就要在弹出一个jinternalframe 修改学生的详细信息。这样学生列表的jinternalframe  就要禁用。
      

  4.   

    我估计因为JFrame继承的是Window类,而JIternalFrame则直接继承的JComponent,JIternalFrame就是相当于一个JLabel了,所以直接给JIternalFrame调用setEnabled()方法不能达到JFrame的效果。
    我是这样理解的,好的解决办法我也没想出来,不过实在不行我出个馊主意:
    如果这个JIternalFrame上的组件不复杂的话(比如组件都是直接加在ContentPane上),调用getComponents()方法返回一个Component[]数组,然后楼主用for循环给它们都禁用了。import java.awt.*;
    import javax.swing.*;
    import java.awt.event.ActionListener;
    import java.util.EventListener;
    import java.awt.event.ActionEvent;public class TestMenu extends JFrame implements ActionListener  
    {
    JMenuBar jmb;
    JMenu jm;
    JMenuItem jmi;
    JDesktopPane jdk;
    Container con;
    public TestMenu()
    {
    con = this.getContentPane();
    jmb=new JMenuBar();
    jm=new JMenu("Open");
    jmi=new JMenuItem("New");
    jmi.addActionListener(this);
    jdk=new JDesktopPane();


    jm.add(jmi);
    jm.addSeparator();
    jmb.add(jm);
    con.add(jdk);
    this.setJMenuBar(jmb);
    this.setSize(400,400);
    this.setVisible(true);

    }
    public static void main(String args[])
    {
    new TestMenu();
    } public void actionPerformed(ActionEvent e) {
    if(e.getSource()==jmi)
    {
    JOpenFrame jo=new JOpenFrame();
    jo.setEnabled(false);
    Component[] c= jo.con.getComponents();
    for(int i=0;i<c.length;i++)
    c[i].setEnabled(false);
    //for(Component i:c)
    //i.setEnabled(false);
    jdk.add(jo);
    }
    }
    }
    class JOpenFrame extends JInternalFrame
    {
    JLabel jl;
    JButton jb1,jb2;
    Container con;
    public JOpenFrame()
    {
    super("Open",true,true,true,true);
    con=this.getContentPane();
    con.setLayout(new FlowLayout());
    jb1=new JButton("OK");
    jb2=new JButton("Cancel");
    con.add(jb1);
    con.add(jb2);
    setSize(300,300);
    setVisible(true);
    }
    }
      

  5.   

    angues1980(石头心):
      说了半天,我觉得你的思路还算是一个办法。起码你帮我想了。去 http://community.csdn.net/Expert/topic/3799/3799274.xml?temp=.3714258  回一下帖,我把那个帖子的100分也给你。