GridBagLayout布局管理器—实现左右选择框Java认证考试

文章作者 100test 发表时间 2009:04:10 01:55:40
来源 100Test.Com百考试题网


  百考试题编辑整理:使用Swing快2年了,一直没有深入研究Swing中著名的布局管理器GridBagLayout,说他著名是因为他布局灵活,可以适用各种 复杂的布局要求,当然也因为他是著名的复杂,这次由于过几天一次重要的面试,“迫使”我不得不好好研究一下(哈哈,其前太懒了,以后一定多注意。

  先来分享一下我的学习成果,对一些重要参数进行说明:

  1. gridx,gridy 设置组件的位置:其实就是组件行列的设置,注意都是从0开始的,比如 gridx=0,gridy=1时放在0行1列。

  2.gridwidth,gridheight—设置组件跨越的行列,默认值为1;GridBagConstraints.REMAINDER常量,代表此组件为此行或此列的最后一个组件,会占据所有剩余的空间。

  3. weightx,weighty——用来设置窗口变大时,各组件跟着变大的比例。比如组件A的weightx=0.5,组件B的weightx=1,那么窗口X轴变大时剩余的空间就会以1:2的比例分配给组件A和B.

  4.anchor — 当组件空间大于组件本身时,要将组件置于何处。 有CENTER(默认值)、NORTH、NORTHEAST、EAST、SOUTHEAST、WEST、NORTHWEST选择。

  5.insets —— 设置组件之间彼此的间距。 它有四个参数,分别是上,左,下,右,默认为(0,0,0,0)。

  好了,先看一下左右选择框的实现吧:

  import java.awt.Dimension.
  import java.awt.GridBagConstraints.
  import java.awt.GridBagLayout.
  import java.awt.event.ActionEvent.
  import java.awt.event.ActionListener.
  import javax.swing.BorderFactory.
  import javax.swing.DefaultListModel.
  import javax.swing.JButton.
  import javax.swing.JFrame.
  import javax.swing.JLabel.
  import javax.swing.JList.
  import javax.swing.JPanel.
  import javax.swing.JTextField.
  import javax.swing.UIManager.
  import javax.swing.UnsupportedLookAndFeelException.
  public class MyFrame extends JFrame {
  JPanel mainPanel = new JPanel().
  JButton add = new JButton().
  JButton left = new JButton().
  JButton right = new JButton().
  JLabel label = new JLabel().
  JTextField field = new JTextField().
  DefaultListModel leftModel = new DefaultListModel().
  DefaultListModel rightMOdel = new DefaultListModel().
  JList leftList = new JList(leftModel).
  JList rightList = new JList(rightMOdel).
  JPanel left_Right_Panel = new JPanel().
  public MyFrame() {
  this.setTitle("test").
  this.setPreferredSize(new Dimension(600, 400)).
  this.initComponent().
  this.addData().
  this.setVisible(true).
  this.pack().
  }
  /**
  * 初始化组件
  */
  private void initComponent() {
  label.setText("添加选项:").
  add.setText("添加").
  leftList.setPreferredSize(new Dimension(150, 150)).
  rightList.setPreferredSize(leftList.getPreferredSize()).
  left.setText("左").
  right.setText("右").
  mainPanel.setBorder(BorderFactory.createTitledBorder("左右选择框")).
  mainPanel.setLayout(new GridBagLayout()).
  GridBagConstraints c = new GridBagConstraints().
  c.gridx = 0. // 0行0列
  c.gridy = 0.
  c.gridwidth = 1.
  c.gridheight = 1.
  c.fill = GridBagConstraints.HORIZONTAL.
  c.weightx = 0.
  c.weighty = 0.
  mainPanel.add(label, c).
  c.gridx .
  c.weightx = 1.
  mainPanel.add(field, c).
  c.gridx .
  c.weightx = 0.
  c.gridwidth = 1.
  c.gridheight = 1.
  // c.fill = GridBagConstraints.HORIZONTAL.
  mainPanel.add(add, c).
  c.gridx = 0.
  c.gridy = 1.
  c.weightx = 1.
  c.weighty = 1.
  c.gridwidth = 2.
  c.gridheight = 2.


相关文章


Java应用:编写高级JavaScript应用代码Java认证考试
为Tomcat注册的Windows服务增加安全参数Java认证考试
在Java中实现DOM文档和XML文件互相转换Java认证考试
Swing实现Windows任务窗口Java认证考试
GridBagLayout布局管理器—实现左右选择框Java认证考试
jsfl与Flash的完美结合Java认证考试
Java设计模式的中介者模式Java认证考试
Java程序员的迷失—论“虚拟机”Java认证考试
Java学习编程经验分享(二)Java认证考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛