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ć.
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ć.
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);
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.
Nie użyłem metody 'getContentPane', stworzyłem' JPanel' name' contentPanel', aby uzyskać dostęp do metody 'setBorder'. –
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.
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();
}
}
dlaczego trzeba to? –
Jeśli używasz 'JPanel' do panelu zawartości, po prostu' panel.setBorder (nowy EmptyBorder (10, 10, 10, 10)); ' –
@AndrewThompson Jeśli OP pyta o ustawienie wstawek w ramce, dlaczego nie tylko nadpisać 'getInsets()'? – Dan