我有一个带有 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/