java手写控件及事件

本文介绍了使用JAVA手写窗体的过程,通过代码实现控件布局,并探讨了表格布局和流式布局的应用。同时,文章提供了完整的登录窗体示例代码,包括按钮事件和菜单栏的添加。

#前言

最近准备学习了JAVA的相关知识,编程的思路和C#大致相同的,但是手写窗体的代码,接触的不多(毕竟之前都是封装好的控件,直接拖就行了!),所以就多研究了一些,和大家分享分享!

  • JAVA手写窗体控件研究

     为了自己的窗体中控件更加整齐灵活,我们可以把窗体设计为表格布局模式!
    

手写窗体控件,可没有之前拖控件那么简单,我们需要通过代码对控件的一些属性进行修改和设置!(在这感谢软件开发工具的创造者为我们提供了一个又一个优秀的开发工具)

  • 我们可以直接拖拽控件(绝对布局),为什么还要手写呢?

     因为绝对布局有一个致命的缺点:不同的操作系统平台下, 可能会出现位置的移动, 只适合开发平台, 移植效果差 
     
     然而我们灵活的表格布局, 配合流式布局 , 所有操作系统下,显示效果都比较统一. 
    

#代码

##类的创建和一般控件的添加

	import java.awt.*;
	import java.awt.event.*;
	import javax.swing.*;//我们常用的控件都是在这个引用空间里

	public class Test extends JFrame
	{
    
    public static void main(String args[]){
        Test a  = new Test();
    }
    //申明需要的组件
    private final JTextField jtf1,jtf2;
 
    public Test() 
    {
        final String ID ="1";
        final String PW ="1";//设置用户名和密码
        
        setVisible(true);
        setTitle("登陆窗体");//设置窗口标题
        setSize(350, 200);//设置窗口大小
        setLocationRelativeTo(null);//设置窗口居中
        setDefaultCloseOperation(EXIT_ON_CLOSE);//设置关闭时退出虚拟机
        getContentPane().setLayout(new FlowLayout());//设置窗口布局为流式布局
        JPanel jp = new JPanel(new GridLayout(3, 2));//设置jp面板为表格布局3行2列
        //第一行
        JPanel jp01 = new JPanel();
        JLabel jl1 = new JLabel("ID:");
        jp01.add(jl1);
        JPanel jp1 = new JPanel();
        jtf1 = new JTextField(8);
        jp1.add(jtf1);
        //第二行
        JPanel jp02 = new JPanel();
        JLabel jl2 = new JLabel("PW:");
        jp02.add(jl2);
        JPanel jp2 = new JPanel();
        jtf2 = new JTextField(8);
        jp2.add(jtf2);
    
        //第四行
        JPanel jp04 = new JPanel();
        JButton jl4 = new JButton("登陆");
	}
	}

##菜单栏和按钮事件的添加

		//为按钮添加监听器
		jl4.addActionListener(new java.awt.event.ActionListener(){
             //为退出添加事件
             public void actionPerformed(java.awt.event.ActionEvent evt) 
            {
                if (ID.equals(jtf1.getText()) && PW.equals(jtf2.getText())) {
                    JOptionPane.showMessageDialog(null, "登陆成功", "提示", JOptionPane.INFORMATION_MESSAGE);
                }
                else{
                    JOptionPane.showMessageDialog(null, "账号或是密码错误", "提示", JOptionPane.ERROR_MESSAGE);
                    jtf1.setText("");
                    jtf2.setText("");
                }
            }
        });
        
        jp04.add(jl4);
        JPanel jp4 = new JPanel();
        JButton jb = new JButton("退出");
        jp4.add(jb);
         
        //将所有的小容器根据布局放在大容器中
        jp.add(jp01);
        jp.add(jp1);
        jp.add(jp02);
        jp.add(jp2);
        jp.add(jp04);
        jp.add(jp4);
        getContentPane().add(jp);
        
        //创建菜单栏
        JMenuBar menuBar;
        JMenu menu;
        JMenuItem menuItem;
        
        //创建菜单条
        menuBar = new JMenuBar();
        this.setJMenuBar(menuBar);       
        
        //创建File菜单
        menu = new JMenu("目录");
        menuBar.add(menu);
        
        menu.addSeparator();
        menuItem=new JMenuItem("开发者");
        menu.add(menuItem);
        //为open添加监听器
        menuItem.addActionListener(new java.awt.event.ActionListener(){
             public void actionPerformed(java.awt.event.ActionEvent evt) 
            {
               JOptionPane.showMessageDialog(null, "本程序由三瓶矿泉水开发!", "提示", JOptionPane.INFORMATION_MESSAGE);
            }
        });
        
        //创建退出按钮  
        menu = new JMenu("操作");
        menuBar.add(menu); 
         menu.addSeparator();
        menuItem=new JMenuItem("退出");
        menu.add(menuItem);
        //为退出添加监听器
        menuItem.addActionListener(new java.awt.event.ActionListener(){
             //为退出添加事件
             public void actionPerformed(java.awt.event.ActionEvent evt) 
            {
                System.exit(0);
            }
        });

#效果展示

![这里写图片描述](https://img-blog.csdn.net/20180617154610552?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xrMTgyMjc5MTE5Mw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
![这里写图片描述](https://img-blog.csdn.net/20180617154602229?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xrMTgyMjc5MTE5Mw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值