我想设计像框架一样使用四个面板,考虑到放大和缩小屏幕...
喜欢这个设计:
JPanel testPanel = new JPanel();
testPanel.setBorder(BorderFactory.createLineBorder(Color.black));
frame.add(testPanel, BorderLayout.NORTH);
JPanel testPanel1 = new JPanel();
testPanel1.setBorder(BorderFactory.createLineBorder(Color.black));
frame.add(testPanel1, BorderLayout.NORTH);
JPanel testPane2 = new JPanel();
testPane2.setBorder(BorderFactory.createLineBorder(Color.black));
frame.add(testPane2, BorderLayout.EAST);
JPanel testPane3 = new JPanel();
testPane3.setBorder(BorderFactory.createLineBorder(Color.black));
frame.add(testPane3, BorderLayout.CENTER);
最佳答案
你可以...
使用GridBagLayout
...
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.border.CompoundBorder;
import javax.swing.border.EmptyBorder;
import javax.swing.border.LineBorder;
public class Test {
public static void main(String[] args) {
new Test();
}
public Test() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame();
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.weightx = 1;
gbc.fill = GridBagConstraints.BOTH;
add(makePanel("panel 2"), gbc);
gbc.gridy++;
add(makePanel("panel 3"), gbc);
gbc.gridy++;
gbc.weighty = 0.66;
gbc.weightx = 0.66;
add(makePanel("panel 3"), gbc);
gbc.gridx++;
gbc.gridy = 0;
gbc.gridheight = gbc.REMAINDER;
add(makePanel("panel 1"), gbc);
}
protected JPanel makePanel(String name) {
JPanel panel = new JPanel(new GridBagLayout());
panel.add(new JLabel(name));
panel.setBorder(new CompoundBorder(new LineBorder(Color.DARK_GRAY), new EmptyBorder(10, 10, 10, 10)));
return panel;
}
@Override
public Dimension getPreferredSize() {
return new Dimension(500, 400);
}
}
}
你可以...
还可以使用复合布局,这在规则复杂和/或仅影响某些组件的情况下很有用。
您可能使用哪种方法取决于您想要实现的目标,归根结底,没有硬性规定,您需要查看基本要求并考虑哪种方法是最好的 - 不要不要忘记,您可以结合不同的方法来构建不同的解决方案
别忘了看看Laying Out Components Within a Container了解更多详情
关于java - 如何使用 Swing 创建布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51487923/