2013-01-02 25 views
8

JFrameのインセットを設定する方法はありますか? 私はJFrameのインセットを設定するにはどうすればよいですか?

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

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

を試みたが、それらのどれも動作するようには思えません。

+1

? –

+1

コンテンツパネルに 'JPanel'を使用している場合、単純に' panel.setBorder(new EmptyBorder(10,10,10,10)); ' –

+0

@AndrewThompson OPがフレームのインセットを設定するよう求めているのなら、 'getInsets()'をオーバーライドしますか? – Dan

答えて

0

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); 
16
JPanel contentPanel = new JPanel(); 

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

contentPanel.setBorder(padding); 

yourFrame.setContentPane(contentPanel); 

だから、基本的に、contentPanelはあなたのフレームの主なコンテナです。

+0

私は 'getContentPane'メソッドを使いませんでした。' setBorder'メソッドにアクセスするために 'JPanel'という名前の' contentPanel'を作成しました。 –

3

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

0

この質問にはまだ確定的な回答がありません。basiljamesと言ってもいいです。hereです。正しい方法は、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(); 
    } 
} 
関連する問題