`
LK.Bing
  • 浏览: 80221 次
  • 性别: 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!

相关推荐

    Swing控件(JPanel,Container等)设置背景图片

    例如,如果希望背景图片填充整个窗口,可以使用BorderLayout并设置组件大小: ```java panel.setLayout(new BorderLayout()); panel.setSize(frame.getSize()); ``` 5. 更新和显示:最后,更新组件并显示出来: ```...

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

    在Java Swing库中,`JPanel`是一个非常基础且重要的组件,它被广泛用于构建用户界面。本示例中,我们讨论的是一个自定义的`JPanel`子类,名为`AutojustChildPanel`,该子类实现了自适应布局的能力。这种能力使得组件...

    JFrame中添加和设置JPanel的方法实例解析

    最后,设置窗口大小并使其可见。 在Java Swing中,`BorderLayout` 是 `JFrame` 默认的布局管理器,它有五个区域:北(North)、南(South)、东(East)、西(West)和中心(Center)。在示例程序中,`JPanel` 被...

    可插入背景图片的JPanel

    Java的标准库并未提供直接在`JPanel`上设置背景图片的方法,但是通过自定义`JPanel`并重绘组件,我们可以实现这个功能。描述中提到的解决方案可能是通过网上搜索到的一种实现方式,旨在帮助那些尚未找到相应方法的...

    二十Java图形化界面设计中间容器Jpanel.pdf

    需要注意的是,使用 setContentPane() 方法时,不允许设置窗体布局,其只显示最后添加的组件,且该组件将布满整个窗口,而不管原先组件的大小设置。 2. JPanel 的使用 JPanel 是 Java 图形化界面中最常使用的容器...

    swing多个jpanel布局切换实例

    JPanel可以使用不同的布局管理器,以便根据需求灵活地调整组件的位置和大小。本实例将探讨如何在Swing应用中实现多个JPanel布局的切换。 首先,我们需要了解Swing中的布局管理器。Swing提供了多种布局管理器,如...

    用java JFrame,JPanel写的大鱼吃小鱼小游戏

    开发者可以通过设置JFrame的大小、位置、边框、背景色等属性来定制窗口外观,并通过add()方法添加其他组件到JFrame上。 JPanel是Swing中另一个重要的组件,它是一个空白容器,可以用来放置其他的组件或者绘制自定义...

    如何卸载JPanel面板

    Java Swing提供了多种内置的布局管理器,如FlowLayout、BorderLayout、GridLayout等,它们负责决定组件在容器中的位置和大小。选择合适的布局管理器对正确地添加和移除组件至关重要。 **6. 容器层次结构** 在复杂的...

    jpanel设置背景图片的二个小例子

    本篇将通过两个小例子详细介绍如何在`JPanel`中设置背景图片。 ### 示例1:动态加载背景图片 在第一个例子中,我们创建了一个名为 `ImagePanel` 的类,它继承自 `JPanel`。这个类的目的是能够动态加载图片作为背景...

    三种布局方式

    最后,网格布局(GridLayout)将容器划分为固定数量的行和列,每个单元格可以放置一个组件,所有组件的大小都会被调整为一致。虽然在这个例子中没有直接使用GridLayout,但我们可以假设创建一个GridLayout布局的容器...

    往(jscrollPanel)动态添加组件

    在本例中,`JPanel` 的大小被设置为 `400x300`,而 `JScrollPane` 的大小被设置为 `300x200`。这意味着 `JPanel` 的内容超出了 `JScrollPane` 的大小,但 `JScrollPane` 的大小并未根据 `JPanel` 的内容进行调整。 ...

    Java Swing JPanel面板的使用方法

    `JPanel` 是 Swing 中一个非常基础且重要的组件,属于容器类,可以用来组织其他组件,如按钮、文本框等。在 Swing 应用程序中,`JPanel` 经常被用作内容面板或者自定义组件的容器。 1. **JPanel 的概述** `JPanel`...

    JAVA GUI自定义JPanel画板背景

    在默认情况下,JPanel有一个简单的背景色,但通常我们需要更个性化的设计,比如设置自定义的图片背景。为了实现这个目标,我们需要重写JPanel的`paintComponent()`方法。在重写过程中,我们可以利用Graphics对象来...

    在JFrame表单中显示JPanel

    JFrame提供了设置窗口标题、大小、位置以及关闭操作的特性。 其次,JPanel是JComponent的一个子类,它是一个可定制的容器,通常用于组合和管理多个组件。JPanel允许开发者通过自定义布局管理器来控制其内部组件的...

    设置图片适合swing组件

    - **动态调整**:除了初始加载时设置图片大小外,还可以监听组件大小的变化事件,从而实现实时调整图片大小的功能。 - **多组件适配**:除了`JButton`,这种方法也可以应用于其他Swing组件,如`JLabel`、`JPanel`...

    用java中的jpanel实现的扫雷小游戏.zip

    在扫雷中,可能需要自定义布局,以便每个格子占据相同大小的空间。 8. **资源管理**: 游戏可能包含图标或声音资源,如揭示数字的音效、标记雷的图标等。这些资源可以通过`ImageIcon`类加载,并在`JPanel`上显示。 ...

    JAVA实现的图片大小随意拉动调整

    `main`函数创建了一个包含该面板的`JFrame`,并设置为应用程序的主窗口。`addComponentListener`用于添加组件监听器,以便在窗口大小改变时更新图片的显示。 在实际应用中,你可能还需要添加额外的功能,如图片的...

    计算机图形学 使用java2d对文本进行绘制 可以设置字体、大小、颜色、透明度、字符间距、行间距等属性

    本篇将深入探讨如何使用Java2D对文本进行绘制,并详细讲解可以设置的各种属性,如字体、大小、颜色、透明度、字符间距和行间距。 1. **字体选择**:在Java2D中,你可以使用`Font`类来创建和操作字体。通过指定字体...

    java背景设置的两种方式

    1. **利用`JPanel`设置背景** `JPanel`是Java Swing中的一个基础组件,它被用来添加自定义的组件或绘制图形。在`JPanel`上设置背景图像,我们可以重写`paintComponent()`方法。首先,我们需要加载图片,然后在`...

    JAVA如何在为窗口设置背景图片.doc

    例如,在这个示例程序中,我们将背景图片添加到一个 `JPanel` 中,并设置其大小和位置以便填充整个窗口。 知识点5: 使内容窗格透明 在 Java 中,使内容窗格透明需要使用 `setOpaque(false)` 方法。例如,在这个...

Global site tag (gtag.js) - Google Analytics