站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题谁能把一个JDialog的大小设置成(50,300),100分相送!

谁能把一个JDialog的大小设置成(50,300),100分相送!

摘要: 谁能把一个JDialog的大小设置成(50,300),100分相送!


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


public void setPreferredSize(Dimension preferredSize)


public void setSize(Dimension d)


public void setSize(int width,int height)


setsize不行吗?



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


我刚开始做死活不行,我以为是我的方法错了,后来到网上把别人的代码拿过来试一下,还是不行,我用的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);
}
}




问题没有解决,大家帮忙看看啊~~


mark!


有什么更好的解决发方法吗,各位?


我就是用的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;

}
}










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


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


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


现在有个问题就是,怎样替换掉JDialog的标准标题栏呢,而且替换之后,JDIalog还必须能够像原来一样被拖动?

我觉得我比较烦人哈哈,各位别介意哈,菜鸟本来问题就多,哈哈~~



↑返回目录
前一篇: 我是一个菜鸟,不知道怎么样输出最小的一个字母,求救
后一篇: 能让一个JInternaFrame永远处于其他JInterFrame的上方吗?