Java swing

一.Swing概述html

二.建立窗体
三.经常使用组件java

            1.JLabel标签组件安全

            2.JButton按钮组件dom

            3.JRadioButton(单选按钮)组件ide

            4.JCheckBox(复选框)组件布局

            5.JComboBox(选择框)组件.net

            6.JList(列表框)组件设计

            7.JTextField(文本框)组件orm

            8.JPasswordField(密码框)组件htm

            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;                       }                                         }              }                       }     } }

相关文章
相关标签/搜索