设置窗体在屏幕中的位置

注意点:
1.如果想让窗口居中可以直接使用demo.setLocationRelativeTo(null);
2.单行文本框用JTextFiled 多行是JTextArea。文本框的输入若要是纯数字,需要对其设置监听处理。
3.窗体的位置设置是setLocation(x, y);
4.若要获取到屏幕的中心位置代码用:

import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.GraphicsEnvironment;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class GuiDemo extends JFrame {

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                GuiDemo demo = new GuiDemo();
                demo.setTitle("mydemo");
                demo.setSize(new Dimension(370,150));
                demo.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                demo.setVisible(true);
//              demo.setLocationRelativeTo(null);
            }
        });
    }

    public GuiDemo(){
        setLayout(new GridLayout(3, 1));
        JPanel panel1 = new JPanel(new FlowLayout());
        JPanel panel2 = new JPanel(new FlowLayout());
        JPanel panel3 = new JPanel(new FlowLayout());

        Label label = new Label();
        Label label2 = new Label();
        label.setText("左边距:");
        label2.setText("右边距:");

        //单行文本框用JTextFiled 多行是JTextArea
        JTextField field1 = new JTextField();
        JTextField field2 = new JTextField();
        field1.setPreferredSize(new Dimension(200,20)); 
        field2.setPreferredSize(new Dimension(200,20));

        //使用对键盘的点击事件进行响应,进而对所敲击的键值进行判断,如果是所需要的值则输入,不是就屏蔽掉
        field1.addKeyListener(new KeyListener() {
            @Override
            public void keyTyped(KeyEvent e) {
                int keyChar = e.getKeyChar();
                if(keyChar>= KeyEvent.VK_0 && keyChar<=KeyEvent.VK_9){

                }else{
                    e.consume();
                }
            }
            @Override
            public void keyReleased(KeyEvent e) {
                // TODO Auto-generated method stub

            }

            @Override
            public void keyPressed(KeyEvent e) {
                // TODO Auto-generated method stub

            }
        });

        field2.addKeyListener(new KeyListener() {

            @Override
            public void keyTyped(KeyEvent e) {
                int keyChar = e.getKeyChar();
                if(keyChar >= KeyEvent.VK_0 && keyChar <= KeyEvent.VK_9){
                }else{
                    e.consume();
                }
            }

            @Override
            public void keyReleased(KeyEvent e) {
                // TODO Auto-generated method stub

            }

            @Override
            public void keyPressed(KeyEvent e) {
                // TODO Auto-generated method stub

            }
        });

        JButton but1 = new JButton("确定");
        but1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String x_obj = field1.getText();
                String y_obj = field2.getText();
                if(x_obj == null || y_obj == null){
                    return;
                } else{
                    //把String 转换成 int
                    int x = Integer.parseInt(x_obj);
                    int y = Integer.parseInt(y_obj);
                    GuiDemo.this.setLocation(x,y);
                }
            }
        });

        JButton but2 = new JButton("中心位置");
        but2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
                //屏幕中心的坐标,窗体的左上角会坐落在屏幕中心。
                Point point = env.getCenterPoint();
                int x = (int) point.getX();
                int y = (int) point.getY();
                field1.setText(String.valueOf(x));
                field2.setText(String.valueOf(y));
            }
        });

        panel1.add(label);
        panel1.add(field1);
        panel2.add(label2);
        panel2.add(field2);
        panel3.add(but2);
        panel3.add(but1);

        add(panel1);
        add(panel2);
        add(panel3);
    }



}

你可能感兴趣的:(设置窗体在屏幕中的位置)