2013-01-02 2 views
8

Есть ли способ установить вставки JFrame? Я попыталсяКак установить вставки JFrame?

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

и

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

, но ни один из них не похоже на работу.

+1

зачем вам это? –

+1

Если вы используете 'JPanel' для панели содержимого, просто' panel.setBorder (новый 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', я создал имя JPanel' contentPanel' для доступа к методу setBorder. –

3

Переопределение Insets от JFrame не было бы сутью вашей реальной проблемы. Чтобы ответить на ваш вопрос, вы не можете установить вставки JFrame. Вы должны расширить JFrame и переопределить метод getInsets, чтобы предоставить нужные вам вставки.

0

Поскольку у этого вопроса нет окончательного ответа, вы можете сделать это как basiljameshere. Правильный способ сделать это - расширить 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(); 
    } 
} 
Смежные вопросы