科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件深入学习GridBagLayout

深入学习GridBagLayout

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

利用Java来创建图形用户界面,最苦恼的事情莫过于选择用哪种布局管理器了。但还好有一个工具能够解决所有的这些问题—那就是GridBagLayout。

作者:builder.com.cn 2007年4月4日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

工作过程

这一节我假定你已经了解了基本的窗口和组件创建知识。

通过这篇文章我们最终能在一个frame中布局组件,我们将在以后的文章对界面进行改进使它更适用。

因此,为了了解这整个工作的过程,我们列出了所有的目标代码。

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class GridBagWindowGridBagWindow extends JFrame {

private JButton searchBtn;

private JComboBox modeCombo;

private JLabel tagLbl;

private JLabel tagModeLbl;

private JLabel previewLbl;

private JTable resTable;

private JTextField tagTxt;

public GridBagWindowGridBagWindow() {

Container contentPane = getContentPanegetContentPane();

GridBagLayout gridbag = new GridBagLayout();

contentPane.setLayout(gridbag);

GridBagConstraintsGridBagConstraints c = new GridBagConstraintsGridBagConstraints();

//setting a default constraint value

c.fill = GridBagConstraintsGridBagConstraints.HORIZONTAL;

tagLbl = new JLabel("Tags");

c.gridx = 0; //x grid position

c.gridy = 0; //y grid position

gridbag.setConstraints(tagLbl, c); //associate the label with a constraint object

contentPane.add(tagLbl); //add it to content pane

tagModeLbl = new JLabel("Tag Mode");

c.gridx = 0;

c.gridy = 1;

gridbag.setConstraints(tagModeLbl, c);

contentPane.add(tagModeLbl);

tagTxt = new JTextField("plinth");

c.gridx = 1;

c.gridy = 0;

c.gridwidth = 2;

gridbag.setConstraints(tagTxt, c);

contentPane.add(tagTxt);

String[] options = {"all", "any"};

modeCombo = new JComboBox(options);

c.gridx = 1;

c.gridy = 1;

c.gridwidth = 1;

gridbag.setConstraints(modeCombo, c);

contentPane.add(modeCombo);

searchBtn = new JButton("Search");

c.gridx = 1;

c.gridy = 2;

gridbag.setConstraints(searchBtn, c);

contentPane.add(searchBtn);

resTable = new JTable(5,3);

c.gridx = 0;

c.gridy = 3;

c.gridwidth = 3;

gridbag.setConstraints(resTable, c);

contentPane.add(resTable);

previewLbl = new JLabel("Preview goes here");

c.gridx = 0;

c.gridy = 4;

gridbag.setConstraints(previewLbl, c);

contentPane.add(previewLbl);

addWindowListeneraddWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

System.exit(0);

}

});

}

public static void main(String args[]) {

GridBagWindowGridBagWindow window = new GridBagWindowGridBagWindow();

window.setTitle("GridBagWindowGridBagWindow");

window.pack();

window.setVisible(true);

}

}

构造方法前的代码都不是很特殊,都是一些相当标准的import和变量定义。

但是进入构造方法后,事情就变得有趣了。

Container contentPane = getContentPanegetContentPane();

GridBagLayout gridbag = new GridBagLayout();

contentPane.setLayout(gridbag);

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章