gpt4 book ai didi

java - JPanel 之间的间隙

转载 作者:行者123 更新时间:2023-12-01 13:45:55 25 4
gpt4 key购买 nike

我的 JPanels 有问题。我有 1 个主面板(GridBagLayout),里面有 4 个面板。我不想再看到中间有这个 *** 间隙了,呜呜!当我在面板上使用填充时,它可以工作,但有一个问题,左侧的更多面板无法水平调整大小。因此,我将左侧的面板设置为垂直填充,将右侧的面板设置为两者都填充。它工作正常,因为左侧没有调整大小,但中间仍然有这个间隙,当我调整框架大小时,这个间隙的大小从小到大改变;/

屏幕:http://i44.tinypic.com/smr42a.png

enter image description here

编辑:当所有面板都在某些 Jpanel 中时,你能修复它吗(我正在使用 netbeans 设计模式,它强制添加主面板)

import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Example extends JFrame {

public static void main(String[] args) {
final JFrame f = new JFrame();
JPanel p0 = new JPanel();

JPanel p1 = new JPanel();
JPanel p2 = new JPanel();
JPanel p3 = new JPanel();
JPanel p4 = new JPanel();


p1.setBorder(BorderFactory.createTitledBorder("panel 1"));
p2.setBorder(BorderFactory.createTitledBorder("panel 2"));
p3.setBorder(BorderFactory.createTitledBorder("panel 3"));
p4.setBorder(BorderFactory.createTitledBorder("panel 4"));
p1.setBackground(Color.RED);
p2.setBackground(Color.GREEN);
p3.setBackground(Color.BLUE);
p4.setBackground(Color.CYAN);


f.getContentPane().setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.gridx = 0;
c.gridy = 0;
c.ipadx = 50;
p0.add(p1,c);

c.gridy = 1;
c.fill = GridBagConstraints.VERTICAL;
c.weighty = 1;
p0.add(p2,c);

c.gridx = 1;
c.gridy = 0;
c.ipadx = 0;
c.fill = GridBagConstraints.HORIZONTAL;
c.weighty = 0;
c.weightx = 1;
p0.add(p3,c);

c.fill = GridBagConstraints.BOTH;
c.weighty = 1;
c.gridy = 1;
p0.add(p4,c);

f.add(p0);
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.pack();
f.setVisible(true);
}

}

最佳答案

尝试下一个示例。它没有任何间隙/插图:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Example extends JFrame {

public static void main(String[] args) {
final JFrame f = new JFrame();
JPanel p0 = new JPanel(new GridBagLayout());

JPanel p1 = new JPanel();
JPanel p2 = new JPanel();
JPanel p3 = new JPanel();
JPanel p4 = new JPanel();

p1.setBorder(BorderFactory.createTitledBorder("panel 1"));
p2.setBorder(BorderFactory.createTitledBorder("panel 2"));
p3.setBorder(BorderFactory.createTitledBorder("panel 3"));
p4.setBorder(BorderFactory.createTitledBorder("panel 4"));
p1.setBackground(Color.RED);
p2.setBackground(Color.GREEN);
p3.setBackground(Color.BLUE);
p4.setBackground(Color.CYAN);

GridBagConstraints c = new GridBagConstraints();
c.gridx = 0;
c.gridy = 0;
c.ipadx = 50;
p0.add(p1, c);

c.gridy = 1;
c.fill = GridBagConstraints.VERTICAL;
c.weighty = 1;
p0.add(p2, c);

c.gridx = 1;
c.gridy = 0;
c.ipadx = 0;
c.fill = GridBagConstraints.HORIZONTAL;
c.weighty = 0;
c.weightx = 1;
p0.add(p3, c);

c.fill = GridBagConstraints.BOTH;
c.weighty = 1;
c.gridy = 1;
p0.add(p4, c);

f.getContentPane().add(p0,BorderLayout.CENTER);
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.pack();
f.setVisible(true);
}

}

看起来像:

enter image description here

panel1 具有固定大小。

panel2 仅垂直调整大小。

panel3 仅水平调整大小。

panel4 垂直和水平调整大小。

编辑:不要将 LayoutManager 设置为 contentPane,使用默认值(BorderLayout)。还将 GridBagLaout 设置为您的 p0,一切都会正常工作。我建议您阅读 LayoutManager's .

关于java - JPanel 之间的间隙,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20377475/

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