如题,尝试了很多方法,就是不行,郁闷~_~

解决方案 »

  1.   

    public void setPreferredSize(Dimension preferredSize)
    public void setSize(Dimension d)
    public void setSize(int width,int height)
      

  2.   

    是的,setSize,setPreferredSize都用过,不行。不信各位可以试一下,如果成功了,请帖出源代码。
      

  3.   

    我刚开始做死活不行,我以为是我的方法错了,后来到网上把别人的代码拿过来试一下,还是不行,我用的JDK是1.5.08
    //********************我从网上搜到的代码******************************************
    package test.example2;
    import javax.swing.*;
    import javax.swing.event.*;
    import java.awt.event.*;
    import java.awt.BorderLayout;
    import java.awt.GridLayout;class HelpAbout extends JDialog implements ActionListener
    {
    JFrame mainFrame;
    JButton okButton;
    javax.swing.Timer myTimer;
    int Counter=0;
    public HelpAbout(JFrame mainFrame)
    {
    super(mainFrame,"关于本程序的说明",true); //true 代表为有模式对话框
    this.mainFrame= mainFrame;
    JPanel contentPanel=new JPanel();
    contentPanel.setLayout(new BorderLayout()); 
    JLabel imageLabel=new JLabel(new ImageIcon(".\\images\\javalogo.gif"));
    contentPanel.add(imageLabel,BorderLayout.WEST); JPanel authorInfoPane=new JPanel();
    authorInfoPane.setLayout(new GridLayout(1,1));
    JTextArea aboutContent=new JTextArea("本程序是作者在学习Java2 Swing编程的一个简单的程序,\n并不作为商业目的使用。\n作者的联系方式是:\n");
    aboutContent.setEnabled(false);
    authorInfoPane.add(aboutContent);
    contentPanel.add(authorInfoPane,BorderLayout.NORTH); JPanel sysInfoPane=new JPanel();
    sysInfoPane.setLayout(new GridLayout(5,1));
    sysInfoPane.setBorder(BorderFactory.createLoweredBevelBorder());
    contentPanel.add(sysInfoPane,BorderLayout.CENTER);
    JLabel userName=new JLabel("本机的用户名为:"+System.getProperty("user.name"));
    JLabel osName=new JLabel("本机的操作系统是:"+System.getProperty("os.name"));
    JLabel javaVersion=new JLabel("本机中所安装的Java SDK的版本号是:"+System.getProperty("java.version"));
    JLabel totalMemory=new JLabel("本机中Java虚拟机所可能使用的总内存数:"+Runtime.getRuntime().totalMemory()+"字节数" );
    JLabel freeMemory=new JLabel("本机中Java虚拟机所剩余的内存数?"+Runtime.getRuntime().freeMemory()+"字节数" );  sysInfoPane.add(userName);
    sysInfoPane.add(osName);
    sysInfoPane.add(javaVersion);
    sysInfoPane.add(totalMemory);
    sysInfoPane.add(freeMemory); JPanel OKPane=new JPanel();
    okButton=new JButton("确定(O)",new ImageIcon(".\\images\\ok.gif"));
    okButton.setMnemonic('O'); //设置快捷键为"Alt + O"
    /*以下代码是设置案钮的Rollover图象*/ 
    Icon rollover = new ImageIcon(".\\images\\exit.gif");
    Icon general = new ImageIcon(".\\images\\ok.gif");
    Icon press = new ImageIcon(".\\images\\help.gif"); okButton.setRolloverEnabled(true);
    okButton.setIcon(general); //设置离开时的图象
    okButton.setRolloverIcon(rollover); //设置在按纽上时的图象
    okButton.setPressedIcon(press); //设置在按下按纽时的图象
    this.getRootPane().setDefaultButton(okButton); //设置该按钮为该对话框的默认的按钮?.  okButton.addActionListener(this);
    OKPane.add(okButton);
    contentPanel.add("South",OKPane); setContentPane(contentPanel);
    // this.setResizable(false); //设置对话框为不可改变大小 
    myTimer=new javax.swing.Timer(1000,this);
    myTimer.start();
    } public void actionPerformed(ActionEvent parm1)
    {
    // TODO: Add your code here
    if(parm1.getSource()==okButton)
    {
    dispose();
    }
    else if(parm1.getSource()==myTimer)
    {
    Counter++;
    this.setTitle("当前的定时器的值为:"+Counter+"秒"); }
    }

    public static void main(String [] args){
    HelpAbout aboutDialog=new HelpAbout(null);
    aboutDialog.setSize(10,30);//设置大小,宽度没有为10,很是奇怪@_@
    aboutDialog.setVisible(true);
    }
    }
      

  4.   

    我就是用的setSize阿,没有问题啊,我的运行一年多了,这是代码:import java.io.*;
    import java.util.*;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class NewClass extends JDialog{
    private JLabel lbl_classname=new JLabel("Class Name:",JLabel.RIGHT);
    private JTextField txt_classname=new JTextField(20);
    public String classname="";private JLabel lbl_classextends=new JLabel("extends:",JLabel.RIGHT);
    private JTextField txt_classextends=new JTextField(20);
    public String classextends="";private JLabel lbl_classimplements=new JLabel("implements:",JLabel.RIGHT);
    private JTextField txt_classimplements=new JTextField(20);
    public String classimplements=""; private JButton jok=new JButton("OK");
    private JButton jcancel=new JButton("CANCEL");
    private JPanel p1=new JPanel();
    private JPanel p2=new JPanel();
    public String finallystr="";
    public NewClass() {
    setTitle("new class...");
       setSize(320,120);
       this.setModal(true);
       getContentPane().setLayout(new GridLayout(4,2));
       getContentPane().add(lbl_classname);
       getContentPane().add(txt_classname);
       getContentPane().add(lbl_classextends);
       getContentPane().add(txt_classextends);
       getContentPane().add(lbl_classimplements);
       getContentPane().add(txt_classimplements);
       getContentPane().add(p1);
       getContentPane().add(p2);
       p1.setLayout(new BorderLayout());
       p1.add(new JLabel("        "),"West");
       p1.add(jok,"Center");
       p1.add(new JLabel("        "),"East");
       p2.setLayout(new BorderLayout());
       p2.add(new JLabel("        "),"West");
       p2.add(jcancel,"Center");
       p2.add(new JLabel("        "),"East");
       jok.setSize(30,20);
       jcancel.setSize(30,20);
       this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
       jok.addActionListener(new ActionListener()
       {public void actionPerformed(ActionEvent e)
        {
         classname=txt_classname.getText();
        classextends =txt_classextends.getText();
        classimplements=txt_classimplements.getText();
        if(txt_classname.getText().equals("") && txt_classextends.getText().equals("") && txt_classimplements.getText().equals(""))
     finallystr= "nocontent";
    else
    {
        finallystr="public class "+txt_classname.getText();
    if(!txt_classextends.getText().equals(""))
      finallystr +=" extends "+txt_classextends.getText();
    if(!txt_classimplements.getText().equals(""))
      finallystr +=" implements "+txt_classimplements.getText();
    finallystr +="\r\n{\r\npublic "+txt_classname.getText()+"()\r\n{\r\n}\r\n";
    finallystr +="public static void main(String args[]){\r\n"+classname+" f=new "+classname+"();\r\nf.show();\r\n}\r\n";
    if(txt_classimplements.getText().equals("Runnable"))
      finallystr +="public void run(){\r\n}";
    else if(txt_classimplements.getText().equals("ActionListener"))
      finallystr +="public void actionPerformed(ActionEvent e){Object o=e.getSource();}";
    finallystr +="}";
    }
         dispose();
        }
        });
        jcancel.addActionListener(new ActionListener()
       {public void actionPerformed(ActionEvent e)
        {
         finallystr="nocontent";
         dispose();
        }
        });
       super.show();
    }public String getClassname()
    {
    return classname;
    }
    public String getClassextends()
    {
    return classextends;
    }

    public String getClassimplements()
    {
    return classimplements;
    }
    public String getAllCode()
    { return finallystr;}
    }







      

  5.   

    你的代码在调用JDialog类时,最好直接new那个JDialog类,窗口大小应用那个JDialog类自己设置
      

  6.   

    To:zgysc(翠湖寒)
    谢谢老兄的指点,可是,你发现没有,你设置的宽度是(320,120),如果你把宽度设置成小于100,你就会发现这个问题了。JFrame也一样。
      

  7.   

    这个问题主要是由标题栏引发的,如果把JFrame设置成setUndercorated(true);则JFrame的大小可以设置成(50,300)没问题,否则,JFrame的宽度始终到不了50,有兴趣的话可以验证一下,呵呵~~
      

  8.   

    现在有个问题就是,怎样替换掉JDialog的标准标题栏呢,而且替换之后,JDIalog还必须能够像原来一样被拖动?我觉得我比较烦人哈哈,各位别介意哈,菜鸟本来问题就多,哈哈~~