gpt4 book ai didi

java - 使用 BorderLayout.centre 将 JPanel 放置在中心,在所有 4 个方向上间隔 50 像素

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

我有一个带有 BorderLayout 的 JFrame,我想在 JFrame 的中心放置一个 JPanel,但在所有方向上都有 50 像素的空间。那是!当我们在 BorderLaout 的中心添加一个组件时,它会覆盖父级的所有空间,但我想在所有 4 个方向上保留空间。我所做的是,我刚刚在北、南、东、西创建了宽度和高度均为 50 像素的面板。这是代码。

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.Component;
import java.awt.Color;
import java.awt.Dimension;


public class Abc extends JFrame {

private JPanel contentPane;

/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Abc frame = new Abc();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

/**
* Create the frame.
*/
public Abc() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);

JPanel panel = new JPanel();
panel.setPreferredSize(new Dimension(10, 50));
contentPane.add(panel, BorderLayout.NORTH);

JPanel panel_1 = new JPanel();
panel_1.setPreferredSize(new Dimension(50, 10));
contentPane.add(panel_1, BorderLayout.WEST);

JPanel panel_2 = new JPanel();
panel_2.setPreferredSize(new Dimension(10, 50));
contentPane.add(panel_2, BorderLayout.SOUTH);

JPanel panel_3 = new JPanel();
panel_3.setPreferredSize(new Dimension(50, 10));
contentPane.add(panel_3, BorderLayout.EAST);
}

}

我需要的是一种在各个方向创建空间的简单方法,而不是像我在这段代码中所做的繁琐工作。 BorderLayout 是否有任何方法或构造函数?

最佳答案

演示使用 EmptyBorder 的示例代码:

package snippet;
import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.Box;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.border.LineBorder;

import java.awt.Component;
import java.awt.Color;
import java.awt.Dimension;


public class Abc extends JFrame {

private JPanel contentPane;

/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Abc frame = new Abc();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

/**
* Create the frame.
*/
public Abc() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(50, 50, 50, 50));
contentPane.setLayout(new BorderLayout());
JPanel panel = new JPanel();
panel.setBorder(new LineBorder(Color.black));
contentPane.add(panel);
setContentPane(contentPane);

}
}

关于java - 使用 BorderLayout.centre 将 JPanel 放置在中心,在所有 4 个方向上间隔 50 像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32325296/

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