gpt4 book ai didi

Java 嵌套布局

转载 作者:行者123 更新时间:2023-12-02 02:55:12 24 4
gpt4 key购买 nike

嘿,我正在尝试创建一个具有如下图所示布局的窗口:

layout

我的想法是使用类似这样的面板和嵌套布局:

layout2

这是到目前为止我的代码,但它无法正常工作。我应该怎么做,我应该做什么不同,甚至我的基本概念是错误的?

package layout;

import java.awt.FlowLayout;
import java.awt.GridLayout;
import javax.swing.*;
import models.People;

public class DetailWindow extends JFrame{

public DetailWindow(People newPeople) {
JFrame frame = new JFrame("Detail Window");

JPanel mainPanel = new JPanel(new GridLayout(1,2));
frame.add(mainPanel);

JPanel leftPanel = new JPanel(new GridLayout(2,1));
frame.add(leftPanel);

JPanel rightPanel = new JPanel(new GridLayout(3,1));
frame.add(rightPanel);

JPanel pictureHolder = new JPanel(new FlowLayout());
pictureHolder.add(new JLabel(new ImageIcon(newPeople.getPic())));
leftPanel.add(pictureHolder);

JPanel infoHolder = new JPanel(new GridLayout(6,1));
infoHolder.add(new JTextField(newPeople.getLb_name()));
infoHolder.add(new JTextField(newPeople.getName()));
infoHolder.add(new JTextField(newPeople.getLb_occup()));
infoHolder.add(new JTextField(newPeople.getOccup()));
infoHolder.add(new JTextField(newPeople.getLb_BD()));
infoHolder.add(new JTextField(newPeople.getBD()));
leftPanel.add(infoHolder);


rightPanel.add(new JTextField(newPeople.getName()));
rightPanel.add(new JTextField(newPeople.getOccup()));
rightPanel.add(new JTextField(newPeople.getDetail()));

frame.pack();
frame.setSize(600, 400);
frame.setLocationRelativeTo(null); // Center the frame
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.show();
}
}

(People 是一个自定义类,在主体中我只是调用 DetailWindow 构造函数)

感谢您提前提供的帮助!

最佳答案

通过查看您的图片,我将按照说明使用 GridBagLayout here .

这样做的原因是 GridBagLayout 是使用多个面板时最简单的布局,它的工作原理与基本矩阵相同,用于定位 UI 元素,为了完美地间隔它们,您可以使用间隔符,即一个空的间隔符面板之间具有固定尺寸的布局。

另一方面,有很多出色的 ide,我更喜欢 IntelliJ idea,它有一个 super UI“生成器”,允许您按照自己想要的方式设置 UI 空间。

祝你好运:)

关于Java 嵌套布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43199638/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com