Есть ли способ установить вставки JFrame
? Я попыталсяКак установить вставки JFrame?
frame.getContentPane().getInsets().set(10, 10, 10, 10);
и
frame.getInsets().set(10, 10, 10, 10);
, но ни один из них не похоже на работу.
Есть ли способ установить вставки JFrame
? Я попыталсяКак установить вставки JFrame?
frame.getContentPane().getInsets().set(10, 10, 10, 10);
и
frame.getInsets().set(10, 10, 10, 10);
, но ни один из них не похоже на работу.
Вам необходимо создать объект 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);
JPanel contentPanel = new JPanel();
Border padding = BorderFactory.createEmptyBorder(10, 10, 10, 10);
contentPanel.setBorder(padding);
yourFrame.setContentPane(contentPanel);
Так в основном, contentPanel
главный контейнер вашего кадра.
Я не использовал метод 'getContentPane', я создал имя JPanel' contentPanel' для доступа к методу setBorder. –
Переопределение Insets
от JFrame
не было бы сутью вашей реальной проблемы. Чтобы ответить на ваш вопрос, вы не можете установить вставки JFrame
. Вы должны расширить JFrame и переопределить метод getInsets
, чтобы предоставить нужные вам вставки.
Поскольку у этого вопроса нет окончательного ответа, вы можете сделать это как 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();
}
}
зачем вам это? –
Если вы используете 'JPanel' для панели содержимого, просто' panel.setBorder (новый EmptyBorder (10,10,10,10)); ' –
@AndrewThompson Если OP спрашивает о настройке вставки на фрейме, почему бы не просто переопределить 'getInsets()'? – Dan