使用Java布局管理器的目的是什么?

鲍比·罗比拉德(Bobby C.Robillard)

似乎每当我尝试创建一个程序时,我总是会使用setLayout(null);Java中命令来结束程序,因为我想绝对定位放置在我的swing组件上的任何东西。据我了解,每个人都在说要使用布局管理器来简化编码过程,但是它如何简化呢?平台系统之间的绝对定位会出现什么问题?

垃圾神

当使用layout时,调用pack()“导致Window其大小适合其子组件的首选大小和布局。” 如果不这样做,则必须尝试自己计算范围。如果(当)您弄错了,如下面有些人为的示例所示,用户会责怪您-并非没有道理。此处显示了有关不可调整大小的容器的相关示例

图像

import java.awt.EventQueue;
import java.awt.FontMetrics;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;

/**
 * @see https://stackoverflow.com/a/37801762/230513
 * @see https://stackoverflow.com/a/12532237/230513
 */
public class Evil {

    private static final String S = "Tomorrow's winning lottery numbers: 42, ";
    private final JLabel label = new JLabel(S + "3, 1, 4, 1, 5, 9");

    private void display() {
        JFrame f = new JFrame("Evil");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setLayout(null);
        FontMetrics fm = label.getFontMetrics(label.getFont());
        int w = SwingUtilities.computeStringWidth(fm, S) + 8;
        int h = fm.getHeight();
        label.setBounds(0, 0, w, h);
        f.add(label);
        f.setSize(w, h * 3);
        f.setLocationRelativeTo(null);
        f.setVisible(true);
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                new Evil().display();
            }
        });
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

什么布局管理器,我应该使用

Java Swing:库,工具,布局管理器

您使用哪个布局管理器?

Java布局管理器垂直中心

什么是最好的布局管理器?

在线Java GUI Builder?至少布局管理器

java哪个布局管理器适合此任务?

Java-将文件从资源管理器移动到Java GUI-这是什么事件?

使用BoxLayout布局管理器自动调整高度

Python中上下文管理器的目的是什么

ConstraintLayout的任何布局管理器?

在该游戏上使用哪个布局管理器?

是什么原因更喜欢增加任务管理器的数量而不是每个任务管理器的任务插槽?

同时使用应用程序服务和管理器的目的是什么?

使用不同的布局管理器不起作用

Android-什么是布局管理器?

Windows 7任务管理器中这些不同类型的内存使用情况是什么?

使用软件而不是窗口管理器的后代的实际含义(如果有)是什么?

任务管理器中的“启动影响”列是什么?

此屏幕快照中的文件管理器是什么?

什么布局管理器将执行此操作?

Matchbox窗口管理器的快捷键是什么?

Windows 10任务管理器中的辅助CPU使用情况图行是什么

使用Filezilla书签/站点管理器的最佳方法是什么?

RecyclerView 布局管理器操作

如何在 JTabbedPane 中使用布局管理器?

Databricks 中使用的集群管理器是什么?如何更改 Databricks 集群中的执行程序数量?

Flink 任务管理器中的插槽是什么?

Android 布局管理器属性