Я попытался setLocation (x, y) и setLocationRelativeTo (null), установив Layout из JFrame как null, но это не сработало. Во время поиска я нашел, что этот вопрос уже задан два или три человека, но они сделали через setLocation() и setLocationRelativeTo (null).Как вручную установить местоположения JComponents и т. Д.
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import java.awt.FlowLayout;
public class StartMenu{
JPanel startPanel;
JLabel title;
JButton startTest;
JButton exit;
JFrame menuFrame;
public StartMenu(){
menuFrame = new JFrame("Start Menu");
menuFrame.setLayout(null);
startPanel = new JPanel();
title = new JLabel("Adaptive Test",JLabel.CENTER);
title.setLocation(20,20);
startPanel.add(title);
startTest = new JButton("Start");
startTest.setLocation(40,40);
startPanel.add(startTest);
exit = new JButton("Exit");
exit.setLocation(100,100);
startPanel.add(exit);
menuFrame.setContentPane(startPanel);
menuFrame.setVisible(true);
menuFrame.setSize(500, 500);
menuFrame.setResizable(false);
menuFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Java GUI должны работать с различными ОС, размером экрана, разрешением экрана и т. Д., Используя различные PLAF в разных локалях. Таким образом, они не способствуют идеальной компоновке пикселей. Вместо этого используйте диспетчеры макетов или [их комбинации] (http://stackoverflow.com/a/5630271/418556), а также макет и границы для [пробела] (http://stackoverflow.com/a/17874718/ 418556). –
Я голосую, чтобы закрыть этот вопрос как вне темы, потому что он спрашивает, как реализовать хак, когда лучшей стратегией будет использование макетов, границ и отступов. –
Ваш 'startPanel' по-прежнему имеет формат FlowLayout по умолчанию. Измените только макет startPanel на null (а не на фрейм) и используйте 'setBounds()' ... Это применимо только в том случае, если вы действительно хотите нулевой макет, конечно (по причинам обучения или тому подобное). - Если это не необходимо, используйте [менеджеры макетов] (https://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html). –