gpt4 book ai didi

java - FlowLayout 不显示组件而 GridLayout 显示?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:59:23 26 4
gpt4 key购买 nike

我正在制作一个应用程序作为某种中心,用户可以在其中存储他们最喜欢的应用程序的快捷方式并轻松启动它们。不过,我在使用 FlowLayout 时遇到了一些问题。当我使用 GridLayout 时,组件显示完美。当我使用 FlowLayout 时,根本没有任何显示。

网格布局: GridLayout

流式布局: FlowLayout

我只更改了 LayoutManager。当我调用 getComponentCount 时,它们都返回 9。

我觉得这篇文章很长,所以我放了一段我的 code关于 Code Tidy(来自 Pastebin)

预先感谢您的帮助!

最佳答案

1) FlowLayout 非常接受来自JComponentPreferredSize,每个JComponents 可以有不同的维度在屏幕上

示例(未注释 getMinimumSize & getMinimumSize)

import java.awt.*;
import javax.swing.*;

public class CustomComponent extends JFrame {

private static final long serialVersionUID = 1L;

public CustomComponent() {
setTitle("Custom Component Test / BorderLayout");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new FlowLayout());
}

public void display() {
add(new CustomComponents0(), BorderLayout.NORTH);
add(new CustomComponents0(), BorderLayout.CENTER);
add(new CustomComponents0(), BorderLayout.SOUTH);
add(new CustomComponents0(), BorderLayout.EAST);
pack();
// enforces the minimum size of both frame and component
setMinimumSize(getMinimumSize());
setPreferredSize(getPreferredSize());
setVisible(true);
}

public static void main(String[] args) {
Runnable r = new Runnable() {

@Override
public void run() {
CustomComponent main = new CustomComponent();
main.display();
}
};
javax.swing.SwingUtilities.invokeLater(r);
}
}

class CustomComponents0 extends JLabel {

private static final long serialVersionUID = 1L;

/*@Override
public Dimension getMinimumSize() {
return new Dimension(200, 100);
}

@Override
public Dimension getPreferredSize() {
return new Dimension(300, 200);
}*/
@Override
public void paintComponent(Graphics g) {
int margin = 10;
Dimension dim = getSize();
super.paintComponent(g);
g.setColor(Color.red);
g.fillRect(margin, margin, dim.width - margin * 2, dim.height - margin * 2);
}
}

2) GridLayou不为每个JComponents 创建比例区域,然后只接受具有更大DimnesionJComponent > 来自 PreferredSize

3) 对于 GridLayout 我说的是方法 pack(),而不是如果有 JFrame#setSize(),对于 FLowLayout 没关系,

关于java - FlowLayout 不显示组件而 GridLayout 显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11071421/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com