2013-01-02 14 views
8

Czy istnieje sposób ustawienia wstawek JFrame? PróbowałemJak ustawić wstawki ramki JFrame?

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

i

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

ale żaden z nich nie wydają się działać.

+1

dlaczego trzeba to? –

+1

Jeśli używasz 'JPanel' do panelu zawartości, po prostu' panel.setBorder (nowy EmptyBorder (10, 10, 10, 10)); ' –

+0

@AndrewThompson Jeśli OP pyta o ustawienie wstawek w ramce, dlaczego nie tylko nadpisać 'getInsets()'? – Dan

Odpowiedz

0

Musisz utworzyć obiekt LayOutConstraint i ustawić jego wypustki. Podobnie jak w poniższym przykładzie użyłem GridBagLayout() i użyłem obiektu 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); 

Więc zasadniczo contentPanel jest główny pojemnik z ramki.

+0

Nie użyłem metody 'getContentPane', stworzyłem' JPanel' name' contentPanel', aby uzyskać dostęp do metody 'setBorder'. –

3

Przesłanianie Insets z JFrame nie byłoby duszą rzeczywistego problemu. Aby odpowiedzieć na pytanie, nie można ustawić wstawek JFrame. Powinieneś rozszerzyć JFrame i zastąpić metodę getInsets, aby uzyskać potrzebne wstawki.

0

Jako że to pytanie nie ma jeszcze ostatecznej odpowiedzi, możesz to zrobić tak, jak basiljames, podana here. Prawidłowym sposobem jest rozszerzenie JFrame, a następnie zastąpienie metody getInsets().

Na przykład

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(); 
    } 
} 
Powiązane problemy