【发布时间】:2016-01-19 21:25:50
【问题描述】:
我一直在使用空布局,很多人会说不应该这样做。有没有更好的办法?
一些代码作为例子:
import javax.swing.*;
public class Main{
public static void main(String args[]){
JFrame frame = new JFrame();
JPanel panel = new JPanel();
JButton button = new JButton("Click");
//JFrame, frame
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setSize(500, 500);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
//JPanel, panel
panel.setLayout(null); //<<---- Is this correct?
frame.add(panel);
//JButton, button
button.setBounds(25, 25, 100, 60); //<<---- Is this correct?
panel.add(button);
}
}
【问题讨论】:
-
人们说不要使用
null布局而是使用适当的布局管理器是有原因的。像素完美布局是现代 ui 设计中的一种错觉。影响组件单个尺寸的因素太多,您无法控制。 Swing 旨在与核心布局管理器一起工作,丢弃这些将导致无穷无尽的问题和问题,您将花费越来越多的时间来尝试纠正 -
虽然空布局和
setBounds()对于 Swing 新手来说似乎是创建复杂 GUI 的最简单和最好的方法,但创建的 Swing GUI 越多,使用它们时遇到的困难就越严重。当 GUI 调整大小时,它们不会调整您的组件大小,它们是增强或维护的皇家女巫,放置在滚动窗格中时它们完全失败,在与原始不同的所有平台或屏幕分辨率上查看时它们看起来很糟糕. -
API 的设计者,早在 90 年代末就看到了跨平台开发 GUI 可能出现的问题,并在框架的核心设计了布局管理 API。如果您研究更现代的框架,例如 Android 和 iOS,他们已经或正在将布局管理器引入到他们的框架中,原因与桌面同行拥有它们的原因相同,生活变得更简单了。一旦你习惯了使用布局管理器,你就不想没有它们
标签: java swing layout-manager