java - 使用 GrigBagLayout 在 java 中创建一个简单的设计而不使用 swing
问题描述
我想在此代码中仅使用 GrigBagLayout 而不使用 swing 和面板来创建此设计。
为了完成我的分配问题,我只是为此设计准备了代码,但它的排列并不完美。
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);
}
}
所以任何人都可以告诉我我的代码在哪里缺乏完美的安排。
解决方案
我希望你的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
推荐阅读
- c++ - 在 C++ 中何处使用 override 关键字
- javascript - 用于多个语义 UI 主题的语义 UI 主题构建器,支持 Font Awesome 类名和原始语义 UI React 文档演示
- mongodb - mongoengine ReferenceField 的确切含义?
- android - 添加 glide 4.8.0 依赖 gradle build 后出现错误 多个 dex 文件定义 Landroid/arch/lifecycle/MutableLiveData;
- r - 确定垂直于 R 中(海岸线)线的横断面
- apache - OpenClinica 上 favicon 的 Apache 重定向问题
- python - Python pandas 与现有工作表合并并保存
- c++ - 在不同的属性表中定义用户宏
- java - 水壶问题:参数值不起作用,使用“trans.sendToSlaveServer”启动trans
- ruby - 在程序启动时加载或写入设置