Вы разрабатываете приложение Java Swing и задаетесь вопросом, как открыть окно JFrame в центре экрана? Не смотрите дальше! В этой статье мы рассмотрим несколько методов выполнения этой задачи, дополненные разговорными объяснениями и примерами кода, которые помогут вам быстро центрировать ваши JFrames как профессионал.
Метод 1: использование инструментария и классов измерений
Давайте начнем с простого подхода, используя классы java.awt.Toolkitи java.awt.Dimension. Вот код:
import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.JFrame;
public class CenteredJFrameExample {
public static void main(String[] args) {
JFrame frame = new JFrame("Centered JFrame");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
int screenWidth = screenSize.width;
int screenHeight = screenSize.height;
int frameWidth = 400; // Set your desired frame width
int frameHeight = 300; // Set your desired frame height
int x = (screenWidth - frameWidth) / 2;
int y = (screenHeight - frameHeight) / 2;
frame.setBounds(x, y, frameWidth, frameHeight);
frame.setVisible(true);
}
}
В этом методе мы получаем размеры экрана, используя Toolkit.getDefaultToolkit().getScreenSize(). Затем мы вычисляем координаты x и y для окна JFrame, вычитая половину ширины и высоты фрейма из ширины и высоты экрана соответственно. Наконец, мы устанавливаем положение кадра с помощью frame.setBounds(x, y, frameWidth, frameHeight).
Метод 2: использование класса GraphicsEnvironment
Другой способ центрировать JFrame — использовать класс java.awt.GraphicsEnvironment. Вот пример:
import java.awt.Dimension;
import java.awt.GraphicsEnvironment;
import javax.swing.JFrame;
public class CenteredJFrameExample {
public static void main(String[] args) {
JFrame frame = new JFrame("Centered JFrame");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Dimension screenSize = GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds().getSize();
int screenWidth = screenSize.width;
int screenHeight = screenSize.height;
int frameWidth = 400; // Set your desired frame width
int frameHeight = 300; // Set your desired frame height
int x = (screenWidth - frameWidth) / 2;
int y = (screenHeight - frameHeight) / 2;
frame.setBounds(x, y, frameWidth, frameHeight);
frame.setVisible(true);
}
}
Этот метод использует GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds().getSize()для получения размера экрана. Остальная часть кода аналогична методу 1.
Метод 3: использование метода setLocationRelativeTo
Для более краткого решения Swing предоставляет метод setLocationRelativeTo. Вот пример:
import javax.swing.JFrame;
public class CenteredJFrameExample {
public static void main(String[] args) {
JFrame frame = new JFrame("Centered JFrame");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 300); // Set your desired frame size
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
При использовании frame.setLocationRelativeTo(null)окно JFrame будет автоматически центрироваться на экране.
Метод 4. Использование класса GraphicsDevice.
Другой подход предполагает использование класса GraphicsDeviceдля получения размера экрана. Вот фрагмент кода:
import java.awt.Dimension;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import javax.swing.JFrame;
public class CenteredJFrameExample {
public static void main(String[] args) {
JFrame frame = new JFrame("Centered JFrame");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
Dimension screenSize = new Dimension(gd.getDisplayMode().getWidth(), gd.getDisplayMode().getHeight());
int frameWidth = 400; // Set your desired frame width
int frameHeight = 300; // Set your desired frame height
int x = (screenSize.width - frameWidth) / 2;
int y = (screenSize.height - frameHeight) / 2;
frame.setBounds(x, y, frameWidth, frameHeight);
frame.setVisible(true);
}
}
В этом методе мы используем GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice()для получения графического устройства, а затем получаем размер экрана с помощью gd.getDisplayMode().getWidth()и gd.getDisplayMode().getHeight(). Остальная часть кода аналогична предыдущим методам.
Это лишь некоторые из методов, которые можно использовать для центрирования окна JFrame на экране в Java Swing. В зависимости от ваших конкретных требований и стиля кодирования вы можете выбрать метод, который подходит вам лучше всего. Приятного кодирования!