当前位置: 首页 > 知识库问答 >
问题:

“pack()”和“setLayout()的问题)`

东方新霁
2023-03-14

我有密码

import javax.swing.JFrame;
import javax.swing.JPanel;

import java.awt.Graphics;
import java.awt.FlowLayout;

class GUI extends JFrame {

    JPanel mainPanel;

    public GUI(String header) {

        super(header);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //setLayout(new FlowLayout(FlowLayout.CENTER));

        init();

        add(mainPanel);
        pack();
    }

    public void init() {
        mainPanel = new JPanel(){
            @Override
            public void paintComponent(Graphics g) {
                g.fillOval(0, 0, 50, 50);
            }
        };
    }
}

在我的主要方法中

GUI progam = new GUI("Title");
progam.setLocationRelativeTo(null);
progam.setVisible(true);

如果我运行程序,我会得到输出:

如果我取消注释setLayout,我会得到输出:

两个问题:

  1. 为什么在第一种情况下pack()没有按预期工作?我不应该看到整个圆而不是它的一半吗?
  2. 为什么椭圆形在第二个输出中变成了三角形?

共有2个答案

叶华皓
2023-03-14

当您在JGroup中绘图时,您实际上并没有在其中放置一个组件,因此它没有任何维度(宽度、高度)以及您的JGroup。

如此处所述https://docs.oracle.com/javase/tutorial/uiswing/components/frame.html,第4项:

要解决此问题,请使用setBoundsetSize或添加具有首选大小的组件。

希望有帮助=)

呼延才
2023-03-14

为什么pack()在第一种情况下不能按预期工作?难道我不应该看到完整的圆而不是它的一半吗?

就是说,您的主面板没有为布局管理器提供尺寸提示,因此它使用其组件的默认尺寸提示(0x0)

添加

@Override
public Dimension getPreferredSize() {
    return new Dimension(50, 50);
}

给您主面板和超级面板。在进行任何自定义绘制之前,先将paintComponent(g)绘制到您的方法中

为什么椭圆形在第二个输出中变成了三角形?

这将是BorderLayoutFlowLayout之间的区别

 类似资料:
  • 我的问题与MiFARE和NTAG标准中PWD和包的使用有关。它类似于NTAG212 Mifare Ultralight,具有认证功能 如果我理解正确,PWD_AUTH背后的想法是接近耦合设备(PCD)发送密码,标签以PACK响应。其他参数AUTHLIM、PROT和AUTH0分别设置应用密码的尝试次数、内存保护和页面地址。 我的问题是: 1)标签本身应该使用PWD和PACK值进行编程还是仅使用PAC

  • 问题内容: 我不清楚和之间的区别。如果我使用而不是会发生什么。 方法到底能做什么? 问题答案: 调用窗口将根据其包含的组件的preferredSize对其大小进行调整。它应尽可能小,但要考虑其组件的preferredSize和布局。如果您只是随机使用,则添加到内容窗格中的组件将进行扩展/收缩以适应可用空间,这意味着可能会覆盖每个组件的首选大小。 设置组件的大小并设置首选的大小。Layoutmana

  • 描述 (Description) 此函数评估LIST中的表达式并将它们打包成EXPR指定的二进制结构。 使用下表中显示的字符指定格式 - 每个字符可以可选地后跟一个数字,该数字指定被打包的值类型的重复计数。根据格式,这是半字节,字符或甚至位。 LIST中保留的值重复为*。 可以使用解包功能解压缩值。 例如,a5表示预期有五个字母。 b32表示预期32位。 h8表示预期有8个nybbles(或4个字

  • yarn pack Creates a compressed gzip archive of package dependencies. yarn pack --filename <filename> Creates a compressed gzip archive of package dependencies and names the file filename.

  • Pack-*.pack 文件具有以下格式: 标题出现在开头,包含以下内容:4字节签名:签名是:{'P','A','C','K'} 4-byte version number (network byte order): Git currently accepts version number 2 or 3 but generates version 2 only. 包中包含4个字节