Как я уже упоминал в вашем предыдущем вопросе, прежде чем я подумал, что вы имеете в виду центрирование самого фрейма - используйте GridBagLayout
без ограничений.Это даст эффект помещения компонента в центр родительского контейнера .Обратите внимание, что поскольку рамка имеет декорации окон, это означает, что сам «родительский контейнер» находится чуть ниже центра экрана.Если это проблема, единственное «исправление», о котором я могу подумать, - это использование недекорированной рамки.
Я помещаю «исправление» в кавычки, потому что я думаю, что это требование нарушено.*
![Centered GroupLayout](https://i.stack.imgur.com/5PgBs.png)
import java.awt.*;
import javax.swing.*;
public class MyTest extends JFrame {
public MyTest() {
initComponents();
}
private void initComponents() {
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setTitle("This is a sample GUI");
getContentPane().setLayout(new GridBagLayout());
JPanel gui = new JPanel();
gui.setBackground(Color.GREEN);
GroupLayout layout = new GroupLayout(gui);
gui.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGap(0, 244, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGap(0, 85, Short.MAX_VALUE)
);
add(gui);
pack();
setExtendedState(Frame.MAXIMIZED_BOTH );
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new MyTest().setVisible(true);
}
});
}
}