0

JGoodies Forms 1.8.0を使用しています

1 つの特大のラベルが原因でレイアウト全体がウィンドウに収まらなくなるという問題がありました。そのテキストを視覚的にトリミングしたいので、テキストが収まらないことはユーザーにとって明らかですが、GUI の残りの部分は引き続き収まるようにする必要があります。

同じ動作を示す簡単な例を用意しました。ここでは、ウィンドウが十分に大きいため、すべて正常に動作します。

そして、ここでは同じウィンドウですが、サイズが変更されています:

ここに画像の説明を入力

一番右の列が見えなくなっていることに注意してください。

望ましい効果は次のとおりです。

  • テキストが収まる場合は、全体を表示する必要があります

  • テキストが収まらない場合は、末尾を切り取る必要があります

  • テキストは左揃えにする必要があります

  • すべてのボタンが常に表示されている必要があります

  • ボタン 100 はウィンドウの隅にある必要があります

スクリーンショットのコードは次のとおりです。

import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.FormLayout;

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

public class Test extends JFrame {

    Test() {
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setSize(900, 600);

        JPanel left = new JPanel();
        left.setBackground(Color.BLUE);

        JPanel right = new JPanel();

        JLabel fox = new JLabel("The quick brown fox jumps over the lazy dog.");
        fox.setFont(new Font(null, 0, 50));

        JPanel rightBottom = new JPanel();
        rightBottom.setLayout(new GridLayout(10, 10));
        for (int i = 1; i <= 100; i++) {
            rightBottom.add(new JButton("butt" + i));
        }

        CellConstraints cc = new CellConstraints();
        this.setLayout(new FormLayout("100dlu,p:g", "f:p:g"));
        this.add(left, cc.xy(1, 1));
        this.add(right, cc.xy(2, 1));
        right.setLayout(new FormLayout("f:p:g", "p,5dlu,f:p:g"));
        right.add(fox, cc.xy(1, 1));
        right.add(rightBottom, cc.xy(1, 3));

    }

    public static void main(String[] args) {
        new Test().setVisible(true);
    }
}
4

2 に答える 2