话不多说了,直接上代码。public class MainFrame extends JFrame{
    public MainFrame() {
        setSize(500, 500);
        ....
        
    }
}这样把frame设置成了500x500的尺寸
然后在panel类中  g.fillRect(500 - 50, 500 - 50, 50, 50);
表示在frame的最右下角画一个方
问题是:
显示出来的窗口中看不到这个方块,也就是说窗口的大小小于500x500.
然后我把窗口手动的拖大以后,就能看见这个方块出现在500, 500的位置。请问,如何让这个窗口在显示的时候就保证其尺寸是我设置的那个尺寸呢?Javaswing

解决方案 »

  1.   

    Window、Frame和Dialog的默认布局管理器是BorderLayout你可以前面加句话:
    package csdn.programbbs_627;import java.awt.Frame;
    import java.awt.Graphics;
    import java.awt.Panel;class Frame1 extends Frame{
    Panel p = new Panel();

    public Frame1(){
    setLayout(null);
    setSize(500, 500);
    add(p);
    setVisible(true);
    }
    @Override
    public void paint(Graphics g) {
    g.fillRect(500 - 50, 500 - 50, 50, 50);
    }
    }
    public class TextFrame {

    public static void main(String[] args) {
    new Frame1();

    }
    }
      

  2.   

    按照1楼的兄弟做了,结果还是不行啊,弹出来的窗口比设定的尺寸还是小一点,画出来的那个方块有一部分在frame框体外。求解啊!
      

  3.   

    这个还用解?问你一下Frame表示什么知道么?表示窗口..你在画图的时候操作的区域想过没有?那只是你能够进行布局,绘图的地方..你在你程序中加入this.setTitle("程序");看看程序是出现在哪的..就知道为什么显示不出来了..窗口最上面是有边框的.那也是窗口大小的一部分..
      

  4.   

    伙计,等你用了setBounds()这个方法后,你就会知道了。
      

  5.   

    一般来说,窗口的大小是总左上角到右下角整个大小,包括四周的边框,所以直接用那个数值是不行的。
    需要考虑边框的宽度。具体宽度是多少,根据不同的系统不同。我在xp和win7上试过,边框大小基本一致,但是还是有数值上的小差别。自己定义几个数值试一下就知道边框的宽度了。
      

  6.   

    你是要所有显示在边框里面的话要考虑装饰部分。我的win7的运行出来没多大差别的
      

  7.   

    坐标是以左上角(0,0)开始的,向下y坐标增大,向右横坐标增大,改成g.fillRect(500 - 100, 500 - 100, 50, 50);或者其他的值也可。