Java的UI

Java的UI,窗口,面板

窗口:

继承JFrame

方法:

public class FramePanel extends JFrame {
    public FramePanel() throws HeadlessException {	
		this.setTitle("Hello World");//设置标题
        this.setSize(500,500);//设置宽高
        this.setLocationRelativeTo(null);//水平垂直居中       设置相对位置
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口时退出程序       设置默认关闭操作
        this.setResizable(false);//设置禁止窗口拖拽     设置可改变的窗口size
		this.setVisible(true);//让窗口显示     设置可视化的  
        }
    public static void main(String[] args) {
        new FramePanel();//创建一个新窗口
    }
}

setVisible一般放在最后一行,这样前面的操作完后才能显示

面板:在窗口上展示的部分

		//创建一个面板
        JPanel jPanel=new JPanel();
        jPanel.setBackground((new Color(123,123,123)));//设置背景
		//把面板添加到窗口
        this.add(jPanel);

三种布局:

流式布局:

面板组件可以设置布局管理方式:布局管理器
FlowLayout:流式布局 也是面板默认布局
把组件放在一排,从左到右排放,一行占满后,重新开一行

eg1:

public class DemoFame extends JFrame {
    public DemoFame() throws HeadlessException {
        this.setTitle("Hello World");
        this.setSize(500,500);//设置宽高
        this.setLocationRelativeTo(null);//水平垂直居中       设置相对位置
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口时退出程序       设置默认关闭操作
        this.setResizable(false);//设置禁止窗口拖拽     设置可改变的窗口size

        JPanel jPanel1=new JPanel(new FlowLayout(FlowLayout.LEFT));//设置内容水平对齐方式

        JButton jButton1=new JButton("按钮1");
        JButton jButton2=new JButton("按钮2");

        //把按钮添加到面板
        jPanel1.add(jButton1);
        jPanel1.add(jButton2);

        //把面板添加到窗口
        this.add(jPanel1);

        this.setVisible(true);//让窗口显示     设置可视化的
    }

    public static void main(String[] args) {
        new DemoFame();//创建一个新窗口
    }
}

eg2:

     JPanel jPanel2=new JPanel(new FlowLayout(FlowLayout.LEFT,200,50));//设置内容水平对齐方式

        JButton jButton1=new JButton("按钮1");
        JButton jButton2=new JButton("按钮2");

        //把按钮添加到面板
        jPanel2.add(jButton1);
        jPanel2.add(jButton2);

    public static void main(String[] args) {
        new DemoFame();//创建一个新窗口
    }
}
边界布局:

总共有五个区域,每个区域可以放置一个组件,并且占满整个区域
中间区域是必须的,其他四个区域根据需要
添加组件式,可以绑定组件的位置,如果不限定,默认在中间

        //创建面板边界布局的面板
        JPanel jPanel=new JPanel(new BorderLayout());

        JButton jButton1=new JButton("按钮1");
        JButton jButton2=new JButton("按钮2");
        JButton jButton3=new JButton("按钮3");
        JButton jButton4=new JButton("按钮4");
        JButton jButton5=new JButton("按钮5");
        //把按钮添加到面板
        jPanel.add(jButton1,BorderLayout.NORTH);
        jPanel.add(jButton2,BorderLayout.SOUTH);
        jPanel.add(jButton3,BorderLayout.WEST);
        jPanel.add(jButton4,BorderLayout.EAST);
        jPanel.add(jButton5,BorderLayout.CENTER);

    public static void main(String[] args) {
        new DemoFrame();//创建一个新窗口
    }
}
网格布局:

网格类似于一个表格,可以设置行数和列数
每个网格中只能放一个组件,占整个区域
从第一行开始放,第一行占满后,开启第二行

       //创建网格布局的面板
        JPanel jPanel=new JPanel(new GridLayout());

        JButton jButton1=new JButton("按钮1");
        JButton jButton2=new JButton("按钮2");
        JButton jButton3=new JButton("按钮3");
        JButton jButton4=new JButton("按钮4");
        JButton jButton5=new JButton("按钮5");
        //把按钮添加到面板
        jPanel.add(jButton1);
        jPanel.add(jButton2);
        jPanel.add(jButton3);
        jPanel.add(jButton4);
        jPanel.add(jButton5);
标签:

用来放文本,图片等

		//创建一个面板
        JPanel jPanel=new JPanel();
        //创建标签
        JLabel jLabel=new JLabel("你好");//label标签
        jLabel.setFont(new Font("横体",Font.BOLD,20));//font字体    bold黑体的,醒目的
        jLabel.setForeground(new Color(27,147,27));//设置字体颜色
        //把标签放在面板上
        jPanel.add(jLabel);

文本框:

单行文本框:
		//单行文本框组件    设置列数   列宽
        JTextField jTextField=new JTextField(15);//    column:列
        jTextField.getText();//获得文本框中的内容

        //把标签放在面板上
        jPanel.add(jLabel);
        jPanel.add(jTextField);//把文本框添加到面板上
多行文本框:
		//多行文本框组件(文本域)
        JTextArea jTextArea=new JTextArea(5,20);//5行20列的文本域
        jTextArea.setLineWrap(true);//设置强制换行
        //带滚动条的    把多行文本框组件加起来
        JScrollPane j=new JScrollPane(jTextArea);
        jPanel.add(j);//把j添加进面板
        //把标签放在面板上
        //jPanel.add(jLabel);
密码文本框:
		JLabel passwordjLabel =new JLabel("密码");
        JPasswordField jPasswordField=new JPasswordField(15);//设置密码文本框
        char[] password=jPasswordField.getPassword();//返回char数组,获得输入的密码
        String s=new String(password);//把char从转换成string
        
        jPanel.add(passwordjLabel);
        jPanel.add(jPasswordField);
按钮:
		//按钮
        JButton jButton=new JButton("登录");//设置按钮
        jButton.setEnabled(false);//禁用按钮
        jButton.setToolTipText("点击登录");//鼠标悬浮在按钮上有提示
        
        jPanel.add(jButton);//添加按钮

菜单:

菜单就是窗口上方的功能

		//菜单栏
        JMenuBar jMenuBar=new JMenuBar();//创建菜单栏
        //创建菜单
        JMenu jMenu1=new JMenu("文件");
        JMenu jMenu2=new JMenu("编辑");
        JMenu jMenu3=new JMenu("帮助");
        //把菜单加到菜单栏
        jMenuBar.add(jMenu1);
        jMenuBar.add(jMenu2);
        jMenuBar.add(jMenu3);
        //创建菜单项
        JMenuItem jMenuItem1=new JMenuItem("新建");
        JMenuItem jMenuItem2=new JMenuItem("另存为");
        JMenuItem jMenuItem3=new JMenuItem("保存");
        JMenuItem jMenuItem4=new JMenuItem("打开");
        JMenuItem jMenuItem5=new JMenuItem("插入");
        JMenuItem jMenuItem6=new JMenuItem("停止");
        JMenuItem jMenuItem7=new JMenuItem("debug");
        JMenuItem jMenuItem8=new JMenuItem("启动");
        JMenuItem jMenuItem9=new JMenuItem("关于我们");

        //把菜单项加到菜单
        jMenu1.add(jMenuItem1);
        jMenu1.add(jMenuItem2);
        jMenu1.add(jMenuItem3);
        jMenu1.add(jMenuItem4);
        jMenu2.add(jMenuItem5);
        jMenu2.add(jMenuItem6);
        jMenu2.add(jMenuItem7);
        jMenu2.add(jMenuItem8);
        jMenu3.add(jMenuItem9);

        //把菜单栏添加到窗口
        this.setMenuBar(jMenuBar);
        this.setVisible(true);//让窗口显示     设置可视化的

事件处理:

对面板上的各种部件,当鼠标点击时需要做出相应的回应,这种交互便是事件处理,当按到相应的部件,做出相应的事件控制是十分有必要的,这样一个程序才能 “活” 起来

事件处理需要监听器,当监听到哪个部件被按到时,执行对应操作

		//new个接口  创建一个匿名内部类,不用每次创建内部类
	    //为按钮添加监听器,当被按时,监听到,执行方法
        jButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("按钮被点击了");
            }
        });

每点击一次按钮就会输出一下"按钮被点击了"

鼠标处理事件:
			//为按钮添加监听器
			jButton.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                System.out.println("鼠标点击触发");
            }

            @Override
            public void mousePressed(MouseEvent e) {
                System.out.println("鼠标按下");
            }

            @Override
            public void mouseReleased(MouseEvent e) {
                System.out.println("鼠标释放");
            }

            @Override
            public void mouseEntered(MouseEvent e) {
                System.out.println("鼠标移入标签上");
            }

            @Override
            public void mouseExited(MouseEvent e) {
                System.out.println("鼠标移入到标签上");
            }
        });
/*
鼠标移入标签上
鼠标移入到标签上
鼠标移入标签上
鼠标按下
鼠标释放
鼠标点击触发
鼠标按下
鼠标释放
鼠标点击触发
鼠标移入到标签上
*/
键盘事件:
//创建一个文本框的监听器
//Adapter适应器
jTextField.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                //getkeycode得到输入的一个字符,,,getkeycode得到这个字符编码
                System.out.println("输入了一次"+e.getKeyChar()+":"+e.getKeyCode());
            }
        });
/*
输入了一次:16
输入了一次a:65
输入了一次d:68
输入了一次a:65
输入了一次d:68
输入了一次f:70
*/
各类警告窗口:
jButton2.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        //confirm确定      JOptionPane.OK_CANCEL_OPTION添加确定或取消选项,确定返回0,取消返回2
        JOptionPane.showConfirmDialog(null,"您确定要退出吗?","操作提示",JOptionPane.OK_CANCEL_OPTION);
    }
});
jButton.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        //获得文本框输入的内容
        String account=jTextField.getText();
        if(account.length()==0){
            //警告窗口
            //pane窗格   dialog对话   title给警告窗口加标题  给窗口加警告图标JOptionPane.ERROR_MESSAGE
            JOptionPane.showMessageDialog(null,"请输入账号","警告",JOptionPane.ERROR_MESSAGE);
            return;
        }
    }
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值