2

私は、NetBeans を使用して作成した Java アプリケーションを持っています (そうです、ここで NetBeans に関する多くの苦情を読みました)。ウィンドウのサイズを変更すると、ウィンドウ (実際には高さ) を特定のサイズ以下に縮小するまで、内容もウィンドウと共にサイズ変更されます。その後、ウィンドウのサイズが変更されますが、内容が切り取られます。

すべてのコンポーネント ウィジェットを確認しました。それらはすべてゼロまたは非常に小さい数の最小サイズを持っています。ゼロ以外の優先サイズを持つ唯一のものは、親と一緒にサイズ変更されないものであり、それらも小さいです。縮小するとき、私はどのウィジェットにもぶつかっていません。これ以上縮小できなくなった時点で、パネルの下部と内側のウィジェットの間にかなりのギャップが下部に向かってあります。

このようにサイズを制限しているものを知る方法はありますか? 関係している可能性のある別のプロパティを探す必要がありますか?

ありがとう。

4

2 に答える 2

1

はい、非常に単純な解決策は、オーバーライドして返すだけですgetMinimumSize()

例えば

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class CustomComponent extends JFrame {

    private static final long serialVersionUID = 1L;

    public CustomComponent() {
        setTitle("Custom Component Test");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

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

    public static void main(String[] args) {
        CustomComponent main = new CustomComponent();
        main.display();
    }
}

class CustomComponents 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);
    }
}
于 2011-09-14T23:31:52.657 に答える
0

サンプルコードを見ることができますか? ウィンドウではなく、ウィンドウ内のコンテンツが特定のポイントを超えてサイズ変更されていないと思います。

于 2011-09-14T23:49:53.197 に答える