摘自http://blog.csdn.net/zcsearching/article/details/50808446

BorderLayout控件大小的设置

使用BorderLayout时,中间的面板会随着窗体的变化而变化,其他区域的大小根据添加组件多少而变化。举个例子,现在想将一个面板固定到上边,高度为固定值,这是我们需要设置面板的高度。但是调用面板的 setSize()方法根本没有效果。调用 setMaximumSize()setMinimumSize()都没有用。

最后才发现应该调用的是 setPreferredSize()才能达到效果。

请看栗子。

 

 package com.wst.bj;

 import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit; import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField; public class LayoutDemo { public static void main(String[] args) {
new myFrame();
}
} /**
* @author liuyan
*
*/
class myFrame { JFrame jframe = new JFrame("搜索");
JTextField textField = new JTextField(20);
JButton jButton = new JButton("转到");
JButton jButton2 = new JButton("转到2");
JButton jButton3 = new JButton("转到3");
JButton jButton4 = new JButton("转到4");
JTextArea textArea = new JTextArea();
JPanel jPanel = new JPanel(new BorderLayout(5,20));
JPanel jPanel2 = new JPanel(new BorderLayout());
JPanel jPanel3 = new JPanel(new BorderLayout());
JPanel jPanel4 = new JPanel(new BorderLayout()); /**
*
*/
public myFrame() { init();
} /**
*
*/
private void init()
{
jframe.setLayout(new BorderLayout());
jframe.add(jPanel2, BorderLayout.SOUTH);
jframe.add(jPanel3, BorderLayout.EAST);
jframe.add(jPanel4, BorderLayout.WEST);
jframe.add(jPanel, BorderLayout.NORTH); jPanel.add(jButton, BorderLayout.EAST);
jPanel.add(textField, BorderLayout.CENTER); jPanel2.add(jButton2);
jPanel3.add(jButton3);
jPanel4.add(jButton4); jPanel.setPreferredSize(new Dimension(0, 150));
jPanel2.setPreferredSize(new Dimension(0, 150));
jPanel3.setPreferredSize(new Dimension(150, 0));
jPanel4.setPreferredSize(new Dimension(150, 0)); jframe.add(textArea, BorderLayout.CENTER); jframe.setVisible(true);
FrameUtil.initFram(jframe, 500, 700);
}
} class FrameUtil
{
public static void initFram(JFrame f, int width, int height)
{
Toolkit toolkit = Toolkit.getDefaultToolkit();
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Dimension d = toolkit.getScreenSize();
int x = (int)d.getWidth();
int y = (int)d.getHeight();
f.setBounds((x-width)/2, (y - height )/2, width, height);
}
}

 package com.wst.bj;

 import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit; import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField; public class LayoutDemo { public static void main(String[] args) {
new myFrame();
}
} /**
* @author liuyan
*
*/
class myFrame { JFrame jframe = new JFrame("搜索");
JTextField textField = new JTextField(20);
JButton jButton = new JButton("转到");
JButton jButton2 = new JButton("转到2");
JButton jButton3 = new JButton("转到3");
JButton jButton4 = new JButton("转到4");
JTextArea textArea = new JTextArea();
JPanel jPanel = new JPanel(new BorderLayout(5,20));
JPanel jPanel2 = new JPanel(new BorderLayout());
JPanel jPanel3 = new JPanel(new BorderLayout());
JPanel jPanel4 = new JPanel(new BorderLayout()); /**
*
*/
public myFrame() { init();
} /**
*
*/
private void init()
{
jframe.setLayout(new BorderLayout());
jframe.add(jPanel2, BorderLayout.SOUTH);
jframe.add(jPanel3, BorderLayout.EAST);
jframe.add(jPanel4, BorderLayout.WEST);
jframe.add(jPanel, BorderLayout.NORTH); jPanel.add(jButton, BorderLayout.EAST);
jPanel.add(textField, BorderLayout.CENTER); jPanel2.add(jButton2);
jPanel3.add(jButton3);
jPanel4.add(jButton4); // jPanel.setPreferredSize(new Dimension(0, 150));
// jPanel2.setPreferredSize(new Dimension(0, 150));
// jPanel3.setPreferredSize(new Dimension(150, 0));
// jPanel4.setPreferredSize(new Dimension(150, 0)); jframe.add(textArea, BorderLayout.CENTER); jframe.setVisible(true);
FrameUtil.initFram(jframe, 500, 700);
}
} class FrameUtil
{
public static void initFram(JFrame f, int width, int height)
{
Toolkit toolkit = Toolkit.getDefaultToolkit();
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Dimension d = toolkit.getScreenSize();
int x = (int)d.getWidth();
int y = (int)d.getHeight();
f.setBounds((x-width)/2, (y - height )/2, width, height);
}
}

BorderLayout布局,修改各个区域大小办法的更多相关文章

  1. java在线聊天项目0.2版本 制作客户端窗体,使用swing(用户界面开发工具包)和awt(抽象窗口工具包) BorderLayout布局与GridLayout布局不同之处 JPanel设置大小

    代码如下: package com.swift; import java.awt.BorderLayout; import java.awt.Color; import javax.swing.JBu ...

  2. 安卓布局修改基础常识篇之TextView属性

    [天使]安卓布局修改基础常识篇之TextView属性 在修改布局xml文件时需要熟练掌握一些属性,以下是TextView也就是文本的属性:android:autoLink 是否自动链接网址或邮箱地址: ...

  3. Javascript进阶篇——(DOM—节点---获取浏览器窗口可视区域大小+获取网页尺寸)—笔记整理

    浏览器窗口可视区域大小获得浏览器窗口的尺寸(浏览器的视口,不包括工具栏和滚动条)的方法:一.对于IE9+.Chrome.Firefox.Opera 以及 Safari: • window.innerH ...

  4. VS2015编译FFMPEG,修改FFmpeg缓冲区大小解决实时流解码丢包问题,FFmpeg错误rtsp流地址卡死的问题,设置超时

    之前尝试过很多网上利用Windows编译FFmpeg的文章,都没有办法编译X64位的FFmpeg,有些教程中有专门提到编译64位的FFmpeg需要下载mingw-w64-install,但是编译的过程 ...

  5. css中height 100vh的应用场景,动态高度百分比布局,浏览器视区大小单位

    css中height 100vh的应用场景,动态高度百分比布局,浏览器视区大小单位 height:100vh 一些只能vw, vh才能完成的应用场景: 1. 场景之:元素的尺寸限制 vw vh 主要是 ...

  6. 修改tomcat JVM 大小

    参考:https://blog.csdn.net/mynamepg/article/details/80591348 1.Xms表示初始分配给jvm的内存大小,-Xmx表示最大可分配给jvm的内存大小 ...

  7. Wpf修改控制的大小

    Wpf修改控制的大小 随窗体的改变而改变 在WINFORM中设置控件的Anchor属性就行了 在WPF中没有Anchor属性 但可以在布局中设置 相关属性实现同样的效果 相关属性 Horizontal ...

  8. JavaScript--DOM浏览器窗口可视区域大小

    浏览器窗口可视区域大小 获得浏览器窗口的尺寸(浏览器的视口,不包括工具栏和滚动条)的方法: 一.对于IE9+.Chrome.Firefox.Opera 以及 Safari: •  window.inn ...

  9. 【博客美化】08.添加"扩大/缩小浏览区域大小" 按钮

    博客园美化相关文章目录: [博客美化]01.推荐和反对炫酷样式 [博客美化]02.公告栏显示个性化时间 [博客美化]03.分享按钮 [博客美化]04.自定义地址栏logo [博客美化]05.添加Git ...

随机推荐

  1. Payssion,海外本地支付_海外本地收款_小语种本地支付_外贸收款_外贸网店收款_欧洲本地支付_俄罗斯本地支付_巴西支付_跨境支付_PAYSSION,让跨境支付更轻松!

    Payssion,海外本地支付_海外本地收款_小语种本地支付_外贸收款_外贸网店收款_欧洲本地支付_俄罗斯本地支付_巴西支付_跨境支付_PAYSSION,让跨境支付更轻松!       首页 / 关于 ...

  2. 04747_Java语言程序设计(一)_第6章_图形界面设计(二)

    例6.1声明一个面板子类,面板子类对象有3个选择框. class Panel1 extends JPanel { JCheckBox box1, box2, box3; Panel1() { box1 ...

  3. 第03讲- 第一个Android项目

    第03讲第一个Android项目 Android项目目录结构: 重要文件: src res AndroidManifest.xml 包含内容: MainActivity.java (程序主视图) 存放 ...

  4. Direct3D 纹理映射

    纹理映射是将2D的图片映射到一个3D物体上面,物体上漂亮图案被称为纹理贴图, 一个表面可以支持多张贴图等等,下面简单介绍下纹理贴图 纹理贴图UV: 贴图是一个个像素点组成,每一个像素点都由一个坐标最后 ...

  5. java技术学习网址收藏

    Bootstrap:http://www.runoob.com/bootstrap/bootstrap-intro.html AngularJS : http://www.runoob.com/ang ...

  6. The account is locked

    SQL> select * from v$version where rownum=1; BANNER --------------------------------------------- ...

  7. LR选择哪种方式录制

    LR选择哪种方式录制,有以下考虑原则: 1.基于浏览器的应用程序推荐使用HTML-basic script方式录制 2.不是基于浏览器的应用程序推荐使用URL-basic script方式录制 3.如 ...

  8. linux 系统监控系列之vmstat

    vmstat的官方定义是:vmstat - Report virtual memory statistics,即虚拟内存的统计. 先来追根溯源: 什么是虚拟内存? 答:虚拟内存就是磁盘上虚拟出来可以当 ...

  9. WEB服务器5--IIS中ISAPI扩展、ISAPI筛选器

    在IIS的文档中经常会提到两个术语:ISAPI扩展和ISAPI筛选器. ISAPI扩展 “ISAPI扩展(ISAPI Extension)”是一种可以添加到IIS中以增强Web服务器功能的程序,其载体 ...

  10. AngularJS Directive - 开场小介绍(转)

    Directive其实就是让html变得更强大的一种方法.它可以根据需求对dom变形,或注入行为. 觉得它很神秘么,其实一点儿也不神秘,只要开始使用AngularJS了,就一定在使用着Directiv ...