gpt4 book ai didi

java - 推荐用于两个相同大小的表格和按钮的 Java Swing 布局

转载 作者:行者123 更新时间:2023-12-04 12:08:53 25 4
gpt4 key购买 nike

我正在试验 Swing,我想尝试构建一个外观和行为如下的窗口:
绘制所需布局:
enter image description here
本质上,对于任何熟悉 WinForms 的人来说,左“表”应该被 anchor 定在顶部、左侧和底部,而右侧的表则被 anchor 定在顶部、右侧和底部。
我尝试的第一件事是 FlowLayout ,但随着窗口的大小调整,表格将无法正确调整大小。
为了在它们之间创建两个表格和中央按钮,我尝试了 BorderLayout , 通过将表放在 EASTWESTCENTER 中的按钮地区。这成功地使两个表格在调整窗口大小时适本地调整大小和大小,但是按钮填满了它们之间的整个空间,并且宽度随着调整大小而改变(我希望它保持不变)。
有什么想法可以让我开始吗?

最佳答案

以下是基于GridBagLayout的基础demo :

import java.awt.*;
import javax.swing.*;

public class SwingTestPane extends JPanel {

public SwingTestPane() {

GridBagLayout gridBagLayout = new GridBagLayout();
gridBagLayout.columnWeights = new double[]{1, 0.0, 1, 0.0};
gridBagLayout.rowWeights = new double[]{1};
setLayout(gridBagLayout);

GridBagConstraints c1 = new GridBagConstraints();
c1.fill = GridBagConstraints.BOTH;
c1.gridx = 0;
c1.gridy = 0;
JPanel ltPane = new LeftTablePane();
add(ltPane, c1);

GridBagConstraints c2 = new GridBagConstraints();
c2.fill = GridBagConstraints.VERTICAL;
c2.gridx = 1;
c2.gridy = 0;

JPanel lbPane = new LeftButtonsPane();
add(lbPane, c2);

GridBagConstraints c3 = new GridBagConstraints();
c3.fill = GridBagConstraints.BOTH;
c3.gridx = 2;
c3.gridy = 0;

JPanel rtPane = new RightTablePane();
add(rtPane, c3);

GridBagConstraints c4 = new GridBagConstraints();
c4.fill = GridBagConstraints.VERTICAL;
c4.gridx = 3;
c4.gridy = 0;

JPanel rbPane = new RightButtonsPane();
add(rbPane, c4);
}

public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationByPlatform(true);
frame.getContentPane().add(new SwingTestPane());
frame.pack();
frame.setVisible(true);
}
}

class LeftTablePane extends JPanel {

LeftTablePane() {
setBackground(Color.CYAN);
}

@Override
public Dimension getPreferredSize() {
return new Dimension(200, 300);
}
}

class LeftButtonsPane extends JPanel {

LeftButtonsPane() {
setBackground(Color.YELLOW);
}

@Override
public Dimension getPreferredSize() {
return new Dimension(100, 300);
}
}

class RightTablePane extends JPanel {

RightTablePane() {
setBackground(Color.CYAN);
}

@Override
public Dimension getPreferredSize() {
return new Dimension(200, 300);
}
}

class RightButtonsPane extends JPanel {

RightButtonsPane() {
setBackground(Color.YELLOW);
}

@Override
public Dimension getPreferredSize() {
return new Dimension(100, 300);
}
}

关于java - 推荐用于两个相同大小的表格和按钮的 Java Swing 布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68756798/

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