控制JFrame窗体的位置 居中或任意位置

本文介绍了使用Java Swing实现窗口加载时的位置居中效果及如何通过用户输入设置窗口在屏幕中的任意位置。提供了完整的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package swings;

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

public class LoadPosition extends JFrame {

	private JPanel contentPane;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					LoadPosition frame = new LoadPosition();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public LoadPosition() {
		setTitle("\u63A7\u5236\u7A97\u4F53\u52A0\u8F7D\u65F6\u7684\u4F4D\u7F6E");
		addWindowListener(new WindowAdapter() {
			@Override
			public void windowOpened(WindowEvent e) {
				do_this_windowOpened(e);
			}
		});
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		contentPane.setLayout(new BorderLayout(0, 0));
		setContentPane(contentPane);
	}

	protected void do_this_windowOpened(WindowEvent e) {
		setLocationRelativeTo(null);// 设置窗体居中
	}
}

例子

2:任意位置:

package swings;

import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.text.NumberFormat;

import javax.swing.JButton;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.border.EmptyBorder;

public class SetLocation extends JFrame {

	private JPanel contentPane;
	private JFormattedTextField leftField;
	private JFormattedTextField topField;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		try {
			UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
		} catch (Throwable e) {
			e.printStackTrace();
		}
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					SetLocation frame = new SetLocation();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
		File file = new File("ac.txt");
	}

	/**
	 * Create the frame.
	 */
	public SetLocation() {
		setTitle("\u8BBE\u7F6E\u7A97\u4F53\u5728\u5C4F\u5E55\u4E2D\u7684\u4F4D\u7F6E");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 295, 157);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);

		JLabel label = new JLabel("\u5DE6\u8FB9\u8DDD\uFF1A");
		label.setBounds(6, 12, 55, 18);
		contentPane.add(label);

		leftField = new JFormattedTextField(NumberFormat.getIntegerInstance());
		leftField.setBounds(69, 6, 204, 30);
		contentPane.add(leftField);
		leftField.setColumns(10);

		JLabel label_1 = new JLabel("\u4E0A\u8FB9\u8DDD\uFF1A");
		label_1.setBounds(6, 42, 55, 18);
		contentPane.add(label_1);

		topField = new JFormattedTextField(NumberFormat.getIntegerInstance());
		topField.setBounds(69, 36, 204, 30);
		contentPane.add(topField);
		topField.setColumns(10);

		JButton button = new JButton("\u8BBE\u7F6E");
		button.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				do_button_actionPerformed(e);
			}
		});
		button.setBounds(97, 83, 90, 30);
		contentPane.add(button);
	}

	protected void do_button_actionPerformed(ActionEvent e) {
		Object value = leftField.getValue();// 获取左边距坐标文本
		Object value2 = topField.getValue();// 获取上边距坐标文本
		if (value == null || value2 == null)
			return;
		int left = ((Number) value).intValue();// 提取左边距坐标值
		int top = ((Number) value2).intValue();// 提取上边距坐标值
		setLocation(left, top);// 用左边距和上边距坐标值设置窗体位置
	}
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值