电话:0731-83595998
导航

GridBagLayout布局管理器—实现左右选择框

来源: 2017-12-19 15:33

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

  先来分享一下我的学习成果,对一些重要参数进行说明 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.GridBagLayout;
import java.awt.event.ActionListener;
import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JTextField;
import javax.swing.UnsupportedLookAndFeelException;
JPanel mainPanel = new JPanel();
JButton left = new JButton();
JLabel label = new JLabel();
DefaultListModel leftModel = new DefaultListModel();
JList leftList = new JList(leftModel);
JPanel left_Right_Panel = new JPanel();
this.setTitle("test");
this.initComponent();
this.setVisible(true);
}
* 初始化组件
private void initComponent() {
add.setText("添加");
rightList.setPreferredSize(leftList.getPreferredSize());
right.setText("右");
mainPanel.setLayout(new GridBagLayout());
c.gridx = 0; // 0行0列
c.gridwidth = 1;
c.fill = GridBagConstraints.HORIZONTAL;
c.weighty = 0;
c.gridx++;
mainPanel.add(field, c);
c.weightx = 0;
c.gridheight = 1;
mainPanel.add(add, c);
c.gridy = 1;
c.weighty = 1;
c.gridheight = 2;|||   c.fill = GridBagConstraints.BOTH;
c.gridx = 2;
c.gridwidth = 1;
c.weightx = 0;
c.anchor = GridBagConstraints.SOUTH;
mainPanel.add(left, c);
c.gridy = 2;
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 3;
c.gridwidth = 1;
c.weightx = 1;
c.fill = GridBagConstraints.BOTH;
this.getContentPane().add(mainPanel);
private void addData() {
@Override
// TODO Auto-generated method stub
}
left.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
leftItem();
});
@Override
// TODO Auto-generated method stub
}
}
* 增加项
private void addItem() {
((DefaultListModel) leftList.getModel())
field.setText("");
}
* 左移项
private void leftItem() {
Object o = rightList.getSelectedValue();
.getSelectedIndex());
}
/**
*/
if (leftList.getSelectedIndex() != -1) {
((DefaultListModel) leftList.getModel()).remove(leftList
((DefaultListModel) rightList.getModel()).addElement(o);
}
try {
} catch (ClassNotFoundException e) {
e.printStackTrace();
// TODO Auto-generated catch block
} catch (IllegalAccessException e) {
e.printStackTrace();
// TODO Auto-generated catch block
}
}

编辑推荐:

下载Word文档

温馨提示:因考试政策、内容不断变化与调整,长理培训网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准! (责任编辑:长理培训)

网络课程 新人注册送三重礼

已有 22658 名学员学习以下课程通过考试

网友评论(共0条评论)

请自觉遵守互联网相关政策法规,评论内容只代表网友观点!

最新评论

点击加载更多评论>>

精品课程

更多
10781人学习

免费试听更多

相关推荐
图书更多+
  • 电网书籍
  • 财会书籍
  • 其它工学书籍
拼团课程更多+
  • 电气拼团课程
  • 财会拼团课程
  • 其它工学拼团
热门排行

长理培训客户端 资讯,试题,视频一手掌握

去 App Store 免费下载 iOS 客户端