首页 > 解决方案 > 使用 GrigBagLayout 在 java 中创建一个简单的设计而不使用 swing

问题描述

我想在此代码中仅使用 GrigBagLayout 而不使用 swing 和面板来创建此设计。

1

为了完成我的分配问题,我只是为此设计准备了代码,但它的排列并不完美。

import java.awt.*;
class GridBagLayout {
    public static void main(String args[]) {

        Frame f = new Frame();
        f.setSize(400,600);
        f.setLayout(new GridLayout());
        GridBagConstraints gbc = new GridBagConstraints();

        Label l = new Label("Name  ");
        gbc.gridx=1;        
        gbc.gridy=1;
        f.add(l,gbc);


        TextField t = new TextField();
        gbc.gridx=1;            
        gbc.gridy=0;
        f.add(t,gbc);


        Label l2 = new Label("Password ");
        gbc.gridx=0;                    
        gbc.gridy=1;
        f.add(l2,gbc);

        TextField t2 = new TextField();
         gbc.gridx=1;           
         gbc.gridy=1;
        f.add(t2,gbc);


        Button b = new Button("OK");
        gbc.gridx=1;
        gbc.gridy=1;
        f.add(b,gbc);

        f.setVisible(true);
    }
}  

所以任何人都可以告诉我我的代码在哪里缺乏完美的安排。

标签: javaawtgridbaglayout

解决方案


我希望你的Assignment工作应该基于GridBagLayout

网格包布局

所以你为什么要使用

  • f.setLayout(new GridLayout());

而不是使用正确的布局

f.setLayout(new GridBagLayout);

import java.awt.*;
    class GridBagLayout
    {
        public static void main(String[] args) {
            Frame f=new Frame();
            f.setSize(300,200);
            GridBagLayout gl = new GridBagLayout();
            f.setLayout(gl);
            GridBagConstraints g=new GridBagConstraints();
            g.gridx=0;
            g.gridy=0;
            f.add(new Label("Name") , g);

            g.gridy=1;
            f.add(new Label("Password") , g);

            g.gridx=1;
            g.gridy=0;
            f.add(new TextField(15) , g);

            g.gridy=1;
            g.gridx=1;
            f.add(new TextField(15) , g);       

            g.gridx=0;
            g.gridy=2;
            g.gridwidth=2;
            g.insets = new Insets(30,0,0,0);
            f.add(new Button("OK"),g);

            f.setVisible(true);
        }
    }

由于 GridBagLayout 将容器划分为同样 sizwd 单元格的网格,它需要大量信息才能知道将组件放置在哪里,这就是为什么我使用 gridx/y 、插图等来正确安排标签和 texfields 的原因。

[让你的 java awt 概念的基础更强大][1]

[1]: https ://docs.oracle.com/javase/tutorial/uiswing/layout/gridbag.html


推荐阅读