gpt4 book ai didi

java - 如何在1个JPanel中获得2个JPanel,可调整大小,具有固定比例?

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

假设一个 JFrame 仅包含 1 个 JPanel。此 JPanel 分为 2 个 JPanel,分别占用 JFrame0.750.25 > 高度。我希望所有这些都可以随窗口大小一起调整大小。

我不知道如何在 Java 中执行此操作。

我是 Java 新手。我已经阅读了一些有关布局的内容,但我所能看到的只是如何在构造函数中设置首选大小(达到此数字时停止调整大小)或通过设置边框获得的一些固定大小。

最佳答案

JFrameBorderLayout,在其上添加一个 JPanelGridBagLayout。将其他两个面板添加到此上。

参见Laying Out Components Within a ContainerHow to Use GridBagLayout了解更多详情

Resizable

import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class Test {

public static void main(String[] args) {
new Test();
}

public Test() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
}

JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new TestPane());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}

public class TestPane extends JPanel {

public TestPane() {
setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 0;
gbc.fill = GridBagConstraints.BOTH;
gbc.weightx = 1;
gbc.weighty = 0.75;

JPanel top = new JPanel(new GridBagLayout());
top.add(new JLabel("Top"));
top.setBackground(Color.RED);
add(top, gbc);

gbc.gridy++;
gbc.weighty = 0.25;

JPanel bottom = new JPanel(new GridBagLayout());
bottom.add(new JLabel("Bottom"));
bottom.setBackground(Color.BLUE);
add(bottom, gbc);

}

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

}

}

关于java - 如何在1个JPanel中获得2个JPanel,可调整大小,具有固定比例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26878965/

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