gpt4 book ai didi

java - 有没有办法将 JLabel 的 PreferredSize 设置为其组件的大小?

转载 作者:行者123 更新时间:2023-12-01 22:25:25 25 4
gpt4 key购买 nike

有什么方法可以获取 JLabel 组件的(我认为是首选)大小,以便我可以根据它们调整其大小?我的 JLabel 的大小为 0,0 ,除非我设置其首选大小,但将其大小设置为任意像素值似乎是错误的方法,因为使用 Swing 的全部意义(据我所知)并不是这样做.

我已经尝试过的事情:

  • repaint() 和 refactor()
  • 向 JPanel 添加 LayoutManager(在本例中为 BoxLayout)

这基本上就是我正在做的事情:

package invisiblelabel;

import java.awt.Color;
import java.awt.Dimension;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.Border;

public class InvisibleLabel {

public static JFrame frame;
public static JPanel panel;
public static JLabel visible;
public static JLabel visibleText;
public static JLabel invisible;
public static JLabel text1;
public static JLabel text2;

public static void main(String[] args) {
createGraphics();
}

public static void createGraphics(){
frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

panel = new JPanel();

visible = new JLabel();
visible.setPreferredSize(new Dimension (500,500));
Border border = BorderFactory.createLineBorder(Color.black);
visible.setBorder(border);
visible.setLayout(new BoxLayout(visible, BoxLayout.Y_AXIS));

visibleText = new JLabel ("This JLabel is visible, because it is created fitting its text.");
visible.add(visibleText);

invisible = new JLabel();
text1 = new JLabel("You can't read this anyways.");
text2 = new JLabel("You can't read this either.");
invisible.add(text1);
invisible.add(text2);

visible.add(invisible);

panel.add(visible);
frame.add(panel);

frame.setLocationRelativeTo(null);
frame.setSize(800,600);
frame.setVisible(true);

visible.repaint();
visible.revalidate();
}

}

}

最佳答案

我很好奇为什么你使用 JLabel 作为容器,但是......

类似于覆盖 JLabelgetPreferredSize 方法...

@Overrride
public Dimension getPreferredSize() {
LayoutManager lm = getLayout();
return lm.preferredLayoutSize(this);
}

会让你开始。这没有考虑任何边界的要求,如果这对您很重要,您还需要添加这些...

这还假设您已将布局管理器应用于 JLabel

关于java - 有没有办法将 JLabel 的 PreferredSize 设置为其组件的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28890850/

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