zoukankan      html  css  js  c++  java
  • Java swing

    一.Swing概述

    二.创建窗体
    三.常用组件

                1.JLabel标签组件

                2.JButton按钮组件

                3.JRadioButton(单选按钮)组件

                4.JCheckBox(复选框)组件

                5.JComboBox(选择框)组件

                6.JList(列表框)组件

                7.JTextField(文本框)组件

                8.JPasswordField(密码框)组件

                9.JTextArea(文本域)组件

    四.常用布局管理器

                1.不使用布局管理器

                2.FlowLayout布局管理器

                3.BorderLayout布局管理器

                4.GridLayout布局管理器

    五.常用面板

               1.JPanel面板

               2.JScrollPane面板

    六.常用事件处理

              1.动作事件处理(ActionEvent类捕获)

    常用的情况是:监听鼠标单击按钮后将进行发生的动作。动作事件可以通过实现接口ActionListener实现动作。

    ActionEvent类中有两个常用方法:

    1》getSource():用来获得处罚此次事件的组件对象,返回值类型为Object

    2》getActionCommand():用来获得与当前动作相关的命令字符串,返回值类型为String

    public interface ActionListener extends EventListener{

         public void actionPerformed(ActionEvent e);

    }

    举例:

    package javaSwing;

    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;

    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;

    public class ActionEventExample extends JFrame {
        
        //定义动作事件的属性
        private JLabel label;   //用来提示信息

        public ActionEventExample() {
            // TODO Auto-generated constructor stub
            
            //对窗体进行设置
            super();
            setTitle("动作事件示例");
            setBounds(100,100,500,375);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    //设置关闭窗体时退出程序
            
            //对标签进行设置
            label=new JLabel();
            label.setText("欢迎登录!");
            label.setHorizontalAlignment(JLabel.CENTER);
            
            //对控制面板进行设置
            JPanel panel=new JPanel();
            getContentPane().add(label);
            
            //对按钮进行设置
            final JButton submitButton=new JButton();
            submitButton.setText("登录");
            submitButton.addActionListener(new buttonListener());
            getContentPane().add(submitButton,BorderLayout.SOUTH);
        }

        public static void main(String[] args) {
            // TODO Auto-generated method stub
              ActionEventExample frame=new ActionEventExample();
              frame.setVisible(true);
        }
        
        class  buttonListener implements ActionListener{

            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO Auto-generated method stub
                JButton button=(JButton) e.getSource();  //获得处罚此次事件的按钮对象
                String buttonName=e.getActionCommand();   //h获得触发此次事件的按钮的标签文本
                if(buttonName.equals("登录")){
                    
                      label.setText("您已经成功登录");
                      button.setText("退出");
                    
                }else{
                    
                      label.setText("您已经安全退出");
                      button.setText("登录");
                }
            }
            
        }

    }

              2.焦点事件处理

              3.鼠标事件处理

              4.键盘事件处理

    七.拼图小游戏源代码

           步骤一:设计一个大窗体

           步骤二:在窗体添加两个控制面板

           步骤三:在控制面板中添加按钮和标签

           步骤四:对按钮进行监听

    注意:本游戏是九宫格小游戏,九个图片中每一个都是120(px)*120(px)像素,制作九宫格教程可以参照微博:http://blog.sina.com.cn/s/blog_13a975b850102wyz3.html

    同时注意图片的放置位置,imgs和src在同一级目录。对于java的目录位置可以参考博客:http://blog.csdn.net/slqslqshiliqiang/article/details/71435751

    源代码:

    package pingTuYouXi;

    import java.awt.BorderLayout;

    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;

    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.border.TitledBorder;

    public class MedleyGame extends JFrame{
        
        //设置窗体属性
        private JPanel centerPanel;    //拼图按钮面板
        private JButton emptyButton;   //空白按钮对象

        
        public MedleyGame() {
            // TODO Auto-generated constructor stub
            super();   //继承JFrame类的构造方法
            setResizable(false);   //设置窗体大小不可改变
            setTitle("拼图游戏");     //设置窗体的标题
            setBounds(100,100,370,525);  //设置窗体的显示位置以及大小
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  //设置关闭窗体时退出程序
            
            
            //为窗体创建一个一个标签组件和按钮组件
            final JPanel topPanel=new JPanel();        //创建面板对象
            topPanel.setBorder(new TitledBorder(null,"",TitledBorder.DEFAULT_JUSTIFICATION,TitledBorder.DEFAULT_POSITION,null,null));         //为控制面板添加边框
            topPanel.setLayout(new BorderLayout());              //控制面板采用边界布局
            getContentPane().add(topPanel,BorderLayout.NORTH);   //将面板添加到窗体顶部
            //设置标签
            final JLabel modelLabel=new JLabel();
            modelLabel.setIcon(new ImageIcon("imgs/model.jpg"));
            topPanel.add(modelLabel,BorderLayout.WEST);           //将标签添加到面板的左侧
            //设置按钮
            final JButton startButton=new JButton();             //创建“下一局”按钮对象
            startButton.setText("下一局");
            startButton.addActionListener(new StartButtonAction());
            topPanel.add(startButton,BorderLayout.CENTER);
            
            
            
            //为窗体创建另一个面板,该面板是图片移动面板
            centerPanel=new JPanel();             //创建拼图按钮面板对象
            centerPanel.setBorder(new TitledBorder(null,"",TitledBorder.DEFAULT_JUSTIFICATION,TitledBorder.DEFAULT_POSITION,null,null));//为面板添加边框
            centerPanel.setLayout(new GridLayout(0,3));    //将面板添加到窗体的中间
            getContentPane().add(centerPanel,BorderLayout.CENTER);   //将面板添加到窗体的中间
           
            String[][] stochasticOrder=reorder();              //stochastic 随机的
            for(int row=0;row<3;row++){                            //遍历行
                for(int col=0;col<3;col++){                        //遍历列
                    
                    final JButton button=new JButton();      //创建拼图按钮对象
                    button.setName(row+""+col);              //创建按钮的名称
                    button.setIcon(new ImageIcon(stochasticOrder[row][col]));        //为按钮设置图片
                    
                    if(stochasticOrder[row][col].equals("imgs/00.jpg")){  //判断是否为空白按钮    
                        
                          emptyButton=button;
                    }
                    button.addActionListener(new ImgButtonAction());     //为按钮设置监听器
                    centerPanel.add(button);                    //为按钮添加到拼图按钮面板中
                }
            }
            
            
            
        }
        
        
        //用来生成网格图片随机摆放顺序
        private String[][] reorder(){    //用来获取网格图片的随机摆放顺序
            String[][] exactnessOrder=new String[3][3];    //网格图片的正确拜访顺序       exactness正确顺序
            for(int row=0;row<3;row++){                                         //遍历行
                for(int col=0;col<3;col++){                                     //遍历列
                     exactnessOrder[row][col]="imgs/"+row+col+".jpg";
                     //exactnessOrder[row][col]=row+col+".jpg";
                }
            }
            
            String[][] stochasticOrder=new String[3][3];   //网格图片的随机拜访顺序
            for(int row=0;row<3;row++)         //遍历行
                for(int col=0;col<3;col++){                          //遍历列
                    while(stochasticOrder[row][col]==null){
                        /*int r=(int)(Math.random()*3);         //取随机行
                        int c=(int)(Math.random()*3);         //取随机列
                        if(exactnessOrder[r][c]!=null){
                            stochasticOrder[row][col]=exactnessOrder[r][c];
                            exactnessOrder[r][c]=null;
                        }*/
                        /*if(row<1&col<2){
                            if(col==0)
                              stochasticOrder[row][col]=exactnessOrder[0][1];
                            if(col==1)
                                stochasticOrder[row][col]=exactnessOrder[0][0];
                        }else{
                             stochasticOrder[row][col]=exactnessOrder[row][col];
                        }*/
                        stochasticOrder[row][col]=exactnessOrder[col][row];
                    }
                }
            return stochasticOrder;
        }
        
        
        public static void main(String[] args) {
            // TODO Auto-generated method stub
             try{
                  MedleyGame frame=new MedleyGame();    //创建本类的对象
                  frame.setVisible(true);               //设置窗体可见
             }catch(Exception e){
                  e.printStackTrace();
             }
        }
        
        //拼图监听按钮,用来监听按钮的情况
        class ImgButtonAction implements ActionListener{    //拼图按钮监听器
            
             public void actionPerformed(ActionEvent e){
                
                 String emptyName=emptyButton.getName();     //获得空白按钮的名字
                 char emptyRow=emptyName.charAt(0);          //获得空白按钮所在的行
                 char emptyCol=emptyName.charAt(1);          //获得空白按钮的列
                
                 JButton clickButton=(JButton) e.getSource();    //获得被单击按钮对象
                 String  clickName=clickButton.getName();        //获得被单击按钮的名称
                
                 char clickRow=clickName.charAt(0);  //获得被单击按钮所在的行
                 char clickCol=clickName.charAt(1);   //获得被单击按钮所在的列
                
                 //判断被单击按钮与空白按钮是否相临
                 if(Math.abs(clickRow-emptyRow)+Math.abs(clickCol-emptyCol)==1){
                     //将被单击按钮的图片移动到空白按钮上
                     emptyButton.setIcon(clickButton.getIcon());
                    
                     //设置被单击的按钮显示空白图片
                     clickButton.setIcon(new ImageIcon("imgs/00.jpg"));
                     emptyButton=clickButton;    //将被单击的按钮设置为空白按钮
                    
                 }
                
             }
            
        }
        
        //编写"下一句"按钮的监听器类
        class StartButtonAction implements ActionListener{
            public void actionPerformed(ActionEvent e){
                
                 String[][]  stochasticOrder=reorder();   //获得网格图片的随机拜访顺序
                 int i=0;                                //拼图按钮在拼图按钮面板中的索引
                
                 for(int row=0;row<3;row++){             //遍历行
                     for(int col=0;col<3;col++){         //遍历列
                        
                          JButton button=(JButton)centerPanel.getComponent(i++);
                          button.setIcon(new ImageIcon(stochasticOrder[row][col]));
                          if(stochasticOrder[row][col].equals("imgs/00.jpg")){
                                emptyButton=button;
                          }
                          
                     }
                 }
                
             }
        }

    }

  • 相关阅读:
    225. 用队列实现栈
    232. 用栈实现队列
    459.重复的子字符串(简单)
    28. 实现 strStr()(简单)
    剑指 Offer 58
    541. 反转字符串 II(简单)
    浏览器渲染页面的过程、重绘、重排以及页面优化
    隐藏一个元素的几种方法
    当我们在浏览器中输入一个URL后,发生了什么?
    Object.create() 和 new Object()、{} 的区别
  • 原文地址:https://www.cnblogs.com/hank-lkj/p/9359053.html
Copyright © 2011-2022 走看看