有没有办法获得JLabel组件的大小(我想最好),以便我可以调整它们的大小?除非我设置其首选大小,否则我的JLabel的大小为0,0,但是将其大小设置为任意像素值似乎是错误的方法,因为使用Swing的整个观点(据我所知)都没有这样做。

我已经尝试过的事情:


repaint()和refactor()
将布局管理器添加到JPanel(在本例中为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/

10-09 05:33
查看更多