`
LK.Bing
  • 浏览: 79512 次
  • 性别: Icon_minigender_2
  • 来自: 临川->成都
社区版块
存档分类
最新评论

如何设置JPanel大小

阅读更多
   最后在做一个俄罗斯方块的小游戏,看着视频做挺简单的,都是手把手的,一行代码一行代码的教.. 自己亲自动手做,才发现难,真难.在界面布局这块就出问题,走不动了. 游戏主要分三块显示区, 主游戏区,下一个游戏图形区,游戏状态区(速度,得分)
    每一个显示区放在一个JPanel中,用了N种布局方式,显示出来总有问题.
1.  BorderLayout的时候,中间区域总是最大,右边显示不出界面(右边大小总是很小,用jpanel.setSize()改变JPANEL大小不管用), 这种布局方式本来就是左右宽度不变,上下高度不变,在窗口改变大小的时候.
2.  FlowLayout的时候,两个jpanel显示出来了,但是只有一丁点小.如上设置大小不管用.
3.  gridLayout的时候,两个jpanel总是一样的大,但是这太不符合游戏风格了吧,左边的主游戏区要大一些才合理.

   最后不得己,采用绝对定位的方式来布局,勉强算过去了,但是心一直不安,Swing不会这么菜,布局这么栏,这点功能都实现不了?
    在网上搜索了很久,用Eclipse不断的尝试小程序,.终于还是让我发现了问题的根源.[size=medium]在设置JPanel大小的时候,要用JPanel.setPreferredSize()这个方法才行.
哈哈,问题总算是解决了,回去后再改代码吧.用这个方法改JPanel大小之后,立马显示出来效果,大borderLayout中上下左右就可以控制宽度了.哈哈
    以下是个小小的测试代码
[/size]
  
 import java.awt.BorderLayout;
import java.awt.Dimension;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JToolBar;


public class MainFrame extends JFrame{

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
                 MainFrame mai=new MainFrame();
                 mai.setLayout(new BorderLayout());
                 JToolBar jtoolbar=new JToolBar();
                 JLabel jl=new JLabel("state");
                 jtoolbar.add(jl);
                 JPanel jpanel1=new JPanel();
                 JButton jb1=new JButton("North");
                 
                 jpanel1.setPreferredSize(new Dimension(300, 150));//关键代码,设置JPanel的大小
                 jpanel1.add(jb1);
                  jpanel1.setBorder(BorderFactory.createEtchedBorder());
                 JButton jb2=new JButton("Center");
                 
                 
                 mai.add(jpanel1,BorderLayout.EAST);
                 mai.add(jb2,BorderLayout.CENTER);
                 mai.add(jtoolbar,BorderLayout.SOUTH);
                 mai.setSize(300, 400);
                 mai.setVisible(true);
                 mai.setDefaultCloseOperation(EXIT_ON_CLOSE);
                 
	}

}
分享到:
评论
3 楼 iruieye 2011-11-25  
public class MainFrame extends JFrame{
private JButton btn1,
btn2;
private JPanel panel;

public static void main(String[] args) {
MainFrame mf = new MainFrame();
mf.setVisible(true);
}

public MainFrame(){
super("员工系统");
init();

this.setSize(300,300);
this.setResizable(false);
//this.setLayout(new BorderLayout());
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
int x = (int)((Toolkit.getDefaultToolkit().getScreenSize().getWidth()- this.getWidth())/2);
int y = (int)((Toolkit.getDefaultToolkit().getScreenSize().getHeight()- this.getHeight())/2);
this.setLocation(x, y);
}

private void init(){
btn1 = new JButton("编写请假条");
btn2 = new JButton("查看请假条");
panel = new JPanel();
//panel.setLayout(new GridLayout(2,1));
panel.setBorder(BorderFactory.createEtchedBorder());  
Dimension d = new Dimension(100, 100);
panel.setPreferredSize(d);
panel.setBackground(Color.blue);
panel.add(btn1);
panel.add(btn2);
this.add(panel,BorderLayout.CENTER);
}


}///////////////////////我这怎么不行呢???试了很多了。非要让我用空布局吗!
2 楼 Trader 2010-07-30  
3Q

最小长度为5最小长度为5最小长度为5最小长度为5最小长度为5最小长度为5最小长度为5
1 楼 idealab 2009-11-16  
Wonderful!

相关推荐

    Java继承JPanel实现自适应布局的面板

    此面板继承自JPanel,放置其上的组件能够根据面板大小的变化,重新计算新的组件位置,从而实现自适应布局,详细使用方法请见源码注释

    ATM自动取款机(java初学者)

    //字体大小设置 userNameLabel.setForeground(Color.decode("#000000"));//字体颜色设置 userNameLabel.setBounds(350,430,128,40); jpanel.add(userNameLabel); userNameText = new JTextField(); ...

    Java调用Zip类批量压缩多个文件.rar

    Java调用Zip类批量压缩多个文件,此前有一个是压缩单个文件,也可参考,相关代码中可找到此源码。  public class ZipDemo extends JFrame{  JFileChooser fileChooser; //文件选择器 ... //设置边界

    完美解决JFrame去掉边框setUndecorated(true)后实现拖动大小功能

    解决JFrame去掉边框后不能动改变大小的一种解决方案,完美解决,只有给中间JPanel setborder就可以解决

    ATM银行取款机源代码

    调整 Jpanel 大小的步骤: 选择要添加的 Jpanel。围绕组件的周长将显示多个小正方形缩放柄。 在 JPanel 右边缘上的缩放柄上单击并保持,然后拖动直到窗体边缘附近的虚线对齐准线出现。 释放缩放柄以调整组件的...

    简单的Java游戏案例程序,包含一个玩家和一个矩形面板 主要作用是通过监听键盘输入来控制玩家在矩形面板上移动

    在MyGame类的构造函数中,设置窗口的标题、大小和关闭策略,并设置窗口位置居中。 在构造函数中,根据玩家的位置创建一个玩家的矩形对象。 在构造函数中,创建一个KeyListener监听器,用于监听键盘输入事件。 在...

    学生管理系统

    // 设置大小,位置 // 设置主标题 JLabel labMain = new JLabel("欢迎进入学生管理系统"); labMain.setBounds(120, 20, 200, 25); labMain.setFont(new Font("宋体", Font.BOLD, 15));// 字体大小格式 this...

    java写的滚动字幕GUI编程

    // 设置布局管理器为 null ,方便 面板定位,一般使用null 布局时,将窗口设置不可改变大小 this.setLayout(null); // 设置窗口位置和大小 this.setBounds(300, 300, 460, 330); // 设置窗口可见 ...

    Java布局管理器的使用基本都在里面(有解释的)

    import javax.swing.*; //导入Swing包 ... //设置窗口的大小和位置 this.setVisible(true); //设置窗口是可见的 } public static void main(String args[]) { BuJu1 s=new BuJu1(); } }

    Java图片缩小与放大特效.rar

    Java图片缩小与放大特效,// 图像缩小与放大演示  public class ScaleImageDemo ... //设置窗口大小  setVisible(true); //设置窗口可见  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序

    java 学生管理系统界面

    //窗体大小 this.setLocationRelativeTo(null);//在屏幕中间显示(居中显示) this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//退出关闭JFrame this.setVisible(true);//显示窗体 //锁定窗体 this...

    duang简易日历记事本

    利用java语言开发建议日历记事本程序。 public class CalendarPad extends JFrame implements MouseListener{ int year,month,day; Hashtable hashtable;... //设置主面板大小及位置 validate(); }

    多线程排号系统课程设计

    import java.awt.BorderLayout;//BorderLayout(边布局) 布局管理器类 ...//设置窗口是否可以改变大小,(false)表示不可以改变 setVisible(true);//设置可见,使窗口可见 } /** *新建一个面板 */

    Java电子日历设计.doc

    主程序CalendarMainClass 声明并创建一个页面实现部分CalendarFrame类的对象,使用 setBounds() 方法设置初始位置以及窗口大小;使用setTitle() 方法设置窗口标题;使用setLocationRelativeTo()方法设置窗口居中...

    大鱼吃小鱼

    //设置窗口大小 setResizable(false);//不可改变大小 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭 setLocationRelativeTo(null);//窗口出现在桌面中间 /*******把鼠标隐藏*****/ Toolkit ...

    模拟风扇(java)

    修改版本1 中Fan 类,让其继承JPanel 类,并且把color 属性设置为Color 类型,默认 属性为red。随机产生radius,取值范围为1-5;随机产生颜色,取值范围为red、blue、yellow、 green、orange;根据color、radius ...

    java模拟风扇

    修改版本 1 中Fan 类,让其继承 JPanel 类,并且把 color属性设置为 Color类型,默认 属性为 red。随机产生 radius ,取值范围为 1-5;随机产生颜色,取值范围为 red、blue 、yellow 、 green、orange ;根据 color...

    Java播放wav音频功能的实现代码.rar

    Java播放wav音频功能的实现代码,播放wav音频,压缩包中带有测试音频,是否... //设置窗口大小   setVisible(true); //设置窗口可视   setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序  }

    java 远程监控系统

    // 设置窗体大小 double height = dis.readDouble(); double width = dis.readDouble(); Dimension ds = new Dimension((int)width, (int)height); //设置 jframe.setSize(ds); //将...

    多媒体处理其中有多个多媒体的作用技术处理

    //设置窗口大小 setVisible(true); //设置窗口可视 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序 } //文件选择组合框事件处理 public void itemStateChanged(ItemEvent e) { if...

Global site tag (gtag.js) - Google Analytics