Swing MigLayout - 当空间不足时缩小标签

问题描述 投票:2回答:1

我试过让标签自动缩小,例如:

This is text成为This i...

但是,我无法做到这一点。

我的布局如下所示:

JPanel container = new JPanel(new MigLayout(new LC().fillX().gridGapX("2")));
container.add(new JXTitledSeparator("Text"), new CC().growX().spanX().wrap());

JLabel shrinkMeIfYouNeedTo = new JLabel("Shrink Shrink");
container.add( shrinkMeIfYouNeedTo, new CC());
container.add( infoText,  new JLabel("Great, long, beautiful info text that shall never shrink"), new CC().growX().spanX().wrap());

JScrollPane scrollPane = new JScrollPane(container);
scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);

我已经尝试过使用shrinkXshrinkPrioX,但它们都没有效果,minWidth("1")也没有效果。

java swing layout constraints miglayout
1个回答
1
投票

我不能包括所有内容,因为我没有SwingX,我不知道infoText是什么。但是我得到了你在这种行为之后的印象:

Full Size

Starting To Shrink

Minimum Size

如果是,则通过将最小宽度和首选宽度设置为0来实现,并将最大宽度设置为您喜欢的任何值。使用String组件约束,你会像width 0:0:100那样做。


可运行的例子

import java.awt.Dimension;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.ScrollPaneConstants;
import javax.swing.SwingConstants;

import net.miginfocom.swing.MigLayout;

public class Test {
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        JPanel container = new JPanel(new MigLayout("fill, gapx 2", "grow"));
        container.add(new JLabel("Header", SwingConstants.CENTER), "split, span, growx, wrap");

        JLabel shrinkMeIfYouNeedTo = new JLabel("Shrink Shrink");
        container.add( shrinkMeIfYouNeedTo, "growx, width 0:0:100");
        container.add( new JLabel("Great, long, beautiful info text that shall never shrink"), "growx");

        JScrollPane scrollPane = new JScrollPane(container);
        scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
        frame.add(scrollPane);
        frame.setPreferredSize(new Dimension(800, 100));
        frame.pack();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.