web-dev-qa-db-ja.com

JFrameのインセットを設定するにはどうすればよいですか?

JFrameのインセットを設定する方法はありますか?私は試した

frame.getContentPane().getInsets().set(10, 10, 10, 10);

そして

frame.getInsets().set(10, 10, 10, 10);

しかし、どれも機能していないようです。

9
JavaNewbie_M107
JPanel contentPanel = new JPanel();

Border padding = BorderFactory.createEmptyBorder(10, 10, 10, 10);

contentPanel.setBorder(padding);

yourFrame.setContentPane(contentPanel);

つまり、基本的に、contentPanelはフレームのメインコンテナです。

21
Mark Vizcarra

InsetsJFrameをオーバーライドすることは、実際の問題の解決策にはなりません。質問に答えるために、JFrameのインセットを設定することはできません。 JFrameを拡張し、getInsetsメソッドをオーバーライドして、必要なインセットを提供する必要があります。

3
basiljames

LayOutConstraintのオブジェクトを作成し、そのインセットを設定する必要があります。以下の例のように、GridBagLayout()とGridBagConstraint()オブジェクトを使用しました。

    GridBagConstraints c = new GridBagConstraints();
    JPanel panel = new JPanel(new GridBagLayout());
    c.insets = new Insets(5, 5, 5, 5); // top, left, bottom, right
    c.anchor = GridBagConstraints.LINE_END;

    // Row 1
    c.gridx = 0;
    c.gridy = 0;
    c.anchor = GridBagConstraints.LINE_START;
    panel.add(isAlgoEnabledLabel, c);
1
Vallabh Patade

この質問にはまだ明確な答えがないので、 basiljames 言った ここ のようにそれを行うことができます。これを行う正しい方法は、JFrameを拡張してから、getInsets()メソッドをオーバーライドすることです。

例えば

import javax.swing.JFrame;
import Java.awt.Insets;

public class JFrameInsets extends JFrame {
    @Override
    public Insets getInsets() {
        return new Insets(10, 10, 10, 10);
    }

    private JFrameInsets()  {
        super("Insets of 10");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        pack();
        setMinimumSize(getSize());
        setVisible(true);
    }

    public static void main(String[] args) {
        new JFrameInsets();
    }
}
0
Dan

メインのJPanelを作成し、他のすべてをそこに挿入できます。

次に、BorderFactoryを使用してEmptyBorderまたはLineBorderを作成できます。

この答えを参照してください: https://stackoverflow.com/a/17925693/8953378

0
Alon Gouldman