为什么下面的布局老是不好 布局中应用布局,这样才能有好的效果。先将一个界面分成几个部份,不能太多,最多4~5个。每个部件份都加入JPanel.对JPanel再用一次布局,加入你的控件,就可以得到非常复杂,但又美观的布局。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你对于GridBagConstraints中的参数weightX应用的不够,它分配属于空间的比例.看看帮助吧.如果决定复杂,建议使用Box,这个东西好用. 我的布局关键是两个按钮只有1/2个TEXTFIELD的高,这个BOX能实现吗 如果希望按钮达到文本框的半高,需要重载按钮以下方法:public Dimension getMaximumSize() public Dimension getMinimumSize() public Dimension getPreferredSize()以下代码组件尺寸不够准确,可以给你一个大概的思路 package untitled6;import java.awt.*;import javax.swing.*;/** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2003</p> * <p>Company: </p> * @author not attributable * @version 1.0 */public class Dialog1 extends JDialog { JPanel panel1 = new JPanel(); BorderLayout borderLayout1 = new BorderLayout(); JPanel jPanel1 = new JPanel(); GridBagLayout gridBagLayout1 = new GridBagLayout(); JTextField jTextField1 = new JTextField(); JTextField jTextField2 = new JTextField(); JButton jButton1 = new MyButton(); JButton jButton2 = new MyButton(); JButton jButton3 = new MyButton(); JButton jButton4 = new MyButton(); public Dialog1(Frame frame, String title, boolean modal) { super(frame, title, modal); try { jbInit(); pack(); } catch (Exception ex) { ex.printStackTrace(); } } public Dialog1() { this(null, "", false); } private void jbInit() throws Exception { panel1.setLayout(borderLayout1); jPanel1.setLayout(gridBagLayout1); jTextField1.setText("jTextField1"); jTextField2.setText("jTextField2"); jButton1.setText("jButton1"); jButton2.setText("jButton2"); jButton3.setText("jButton3"); jButton4.setText("jButton4"); getContentPane().add(panel1); panel1.add(jPanel1, BorderLayout.CENTER); jPanel1.add(jTextField1, new GridBagConstraints(0, 0, 1, 2, 0.0, 0.0 , GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0)); jPanel1.add(jTextField2, new GridBagConstraints(2, 0, 1, 2, 0.0, 0.0 ,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(0, 100, 0, 0), 0, 0)); jPanel1.add(jButton1, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0 , GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0)); jPanel1.add(jButton2, new GridBagConstraints(1, 1, 1, 1, 0.0, 0.0 , GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0)); jPanel1.add(jButton3, new GridBagConstraints(3, 0, 1, 1, 0.0, 0.0 , GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0)); jPanel1.add(jButton4, new GridBagConstraints(3, 1, 1, 1, 0.0, 0.0 , GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0)); } private class MyButton extends JButton { public Dimension getMaximumSize() { return getPreferredSize(); } public Dimension getMinimumSize() { return getPreferredSize(); } public Dimension getPreferredSize() { Dimension dim = super.getPreferredSize(); dim.height /= 2; dim.width /= 2; return dim; } } public static void main(String[] args) { Dialog1 dia = new Dialog1(); dia.setSize(400,300); dia.setVisible( true); }}建议:JButton 中有方法setIcon,只需要添加一个ICON,无需重载按钮的绘制. java图形界面,如何将单选框和复选框设为背景透明? 收集java的常用函数代码!大家分享,共同学习! 问一个关于重写hashCode()方法的问题 一条sql语句可以解决吗? jsp连接MySQL数据库是数据库配置? 一道题目 “奇怪”的MYSQL查询语句 话费计算公式 哇!哇!!哇哇哇哇!!! 谁能给一个JBuilder4的序列号和key? 菜菜鸟问题 【首次使用 eclipse 感觉不错,还不是很习惯,拜托给些教程 谢谢!】
如果决定复杂,建议使用Box,这个东西好用.
public Dimension getMaximumSize()
public Dimension getMinimumSize()
public Dimension getPreferredSize()
以下代码组件尺寸不够准确,可以给你一个大概的思路
package untitled6;import java.awt.*;
import javax.swing.*;/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/public class Dialog1
extends JDialog {
JPanel panel1 = new JPanel();
BorderLayout borderLayout1 = new BorderLayout();
JPanel jPanel1 = new JPanel();
GridBagLayout gridBagLayout1 = new GridBagLayout();
JTextField jTextField1 = new JTextField();
JTextField jTextField2 = new JTextField();
JButton jButton1 = new MyButton();
JButton jButton2 = new MyButton();
JButton jButton3 = new MyButton();
JButton jButton4 = new MyButton(); public Dialog1(Frame frame, String title, boolean modal) {
super(frame, title, modal);
try {
jbInit();
pack();
}
catch (Exception ex) {
ex.printStackTrace();
}
} public Dialog1() {
this(null, "", false);
} private void jbInit() throws Exception {
panel1.setLayout(borderLayout1);
jPanel1.setLayout(gridBagLayout1);
jTextField1.setText("jTextField1");
jTextField2.setText("jTextField2");
jButton1.setText("jButton1");
jButton2.setText("jButton2");
jButton3.setText("jButton3");
jButton4.setText("jButton4");
getContentPane().add(panel1);
panel1.add(jPanel1, BorderLayout.CENTER);
jPanel1.add(jTextField1, new GridBagConstraints(0, 0, 1, 2, 0.0, 0.0
, GridBagConstraints.CENTER, GridBagConstraints.NONE,
new Insets(0, 0, 0, 0), 0, 0));
jPanel1.add(jTextField2, new GridBagConstraints(2, 0, 1, 2, 0.0, 0.0
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(0, 100, 0, 0), 0, 0));
jPanel1.add(jButton1, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0
, GridBagConstraints.CENTER,
GridBagConstraints.NONE,
new Insets(0, 0, 0, 0), 0, 0));
jPanel1.add(jButton2, new GridBagConstraints(1, 1, 1, 1, 0.0, 0.0
, GridBagConstraints.CENTER,
GridBagConstraints.NONE,
new Insets(0, 0, 0, 0), 0, 0));
jPanel1.add(jButton3, new GridBagConstraints(3, 0, 1, 1, 0.0, 0.0
, GridBagConstraints.CENTER,
GridBagConstraints.NONE,
new Insets(0, 0, 0, 0), 0, 0));
jPanel1.add(jButton4, new GridBagConstraints(3, 1, 1, 1, 0.0, 0.0
, GridBagConstraints.CENTER,
GridBagConstraints.NONE,
new Insets(0, 0, 0, 0), 0, 0));
} private class MyButton
extends JButton { public Dimension getMaximumSize() {
return getPreferredSize();
} public Dimension getMinimumSize() {
return getPreferredSize();
} public Dimension getPreferredSize() {
Dimension dim = super.getPreferredSize();
dim.height /= 2;
dim.width /= 2;
return dim;
} }
public static void main(String[] args) {
Dialog1 dia = new Dialog1();
dia.setSize(400,300);
dia.setVisible( true);
}
}建议:JButton 中有方法setIcon,只需要添加一个ICON,无需重载按钮的绘制.