<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 37, comments - 8, trackbacks - 0, articles - 0

    10、布局管理編程演示:
            §流布局管理器(FlowLayout):

    import javax.swing.*;
    import java.awt.*;
    public class FlowLayoutDemo extends JFrame{
     JPanel p;
     JLabel lblUser;
     JTextField txtUser;
     JButton btnCheck,btnExit;
     public FlowLayoutDemo(){
      super("流布局演示");
      setSize(250,150);
      p=new JPanel();
      p.setLayout(new FlowLayout());
      getContentPane().add(p);
      lblUser=new JLabel("用戶名:");
      txtUser=new JTextField(16);
      btnCheck=new JButton("檢測(cè)用戶名");
      btnExit=new JButton("退出");
      p.add(lblUser);
      p.add(txtUser);
      p.add(btnCheck);
      p.add(btnExit);
      setVisible(true);
      
     }
     public static void main(String[] args) {
      new FlowLayoutDemo();
     }
    }
            §邊界布局管理器(BorderLayout):
    import javax.swing.*;
    import java.awt.*;
    public class BorderLayoutDemo extends JFrame{
        JPanel p;
        JButton b1,b2,b3,b4;
        JTextArea ta;
        
    public BorderLayoutDemo(){
            
    super("邊界布局演示");
            setSize(
    250,150);
            p
    =new JPanel();
            p.setLayout(
    new BorderLayout());
            getContentPane().add(p);
            b1
    =new JButton("East");
            b2
    =new JButton("West");
            b3
    =new JButton("North");
            b4
    =new JButton("South");
            ta
    =new JTextArea("Center");
            p.add(b1,
    "East");
            p.add(b2,BorderLayout.WEST);
            p.add(
    "North",b3);
            p.add(
    "South",b4);
            p.add(ta,
    "Center");
            setVisible(
    true);
            
        }

        
    public static void main(String[] args) {
            
    new BorderLayoutDemo();
        }

    }
            §網(wǎng)格布局管理器(GridLayout):
    import javax.swing.*;
    import java.awt.*;
    public class GridLayoutDemo extends JFrame{
        JPanel p;
        JButton b1,b2,b3,b4;
        JTextArea ta;
        JTextField tf;
        
    public GridLayoutDemo(){
            
    super("網(wǎng)格布局演示");
            setSize(
    250,150);
            p
    =new JPanel();
            p.setLayout(
    new GridLayout(3,2));
            getContentPane().add(p);
            b1
    =new JButton("one");
            b2
    =new JButton("two");
            b3
    =new JButton("three");
            b4
    =new JButton("four");
            ta
    =new JTextArea("JTextArea");
            tf
    =new JTextField("JTextField");
            p.add(b1);
            p.add(b2);
            p.add(b3);
            p.add(b4);
            p.add(ta);
            p.add(tf);
            setVisible(
    true);
            
        }

        
    public static void main(String[] args) {
            
    new GridLayoutDemo();
        }

    }
            §網(wǎng)格袋布局管理器(GridBagLayout):
    import javax.swing.*;
    import java.awt.*;
    public class GridBagLayoutDemo extends JFrame{
        JPanel p;
        JTextArea ta;
        JTextField tf;
        JButton b1,b2;
        JLabel l1,l2;
        GridBagConstraints gbc;
        GridBagLayout gbl;
        
    private void addComponent(Component c,GridBagLayout g
                ,GridBagConstraints gc,
    int column ,int row,int width,int height)
        
    {
            gc.gridx
    =column;//指定包含組件的顯示區(qū)域開(kāi)始邊的單元格
            gc.gridy=row;//指定位于組件顯示區(qū)域的頂部的單元格
            gc.gridwidth=width;//指定在組件顯示區(qū)域的一行中的單元格數(shù)
            gc.gridheight=height;//指定在組件顯示區(qū)域的一列中的單元格數(shù)
            g.setConstraints(c, gc);//設(shè)置此布局中指定組件的約束條件
            p.add(c);
        }

        
    public GridBagLayoutDemo(){
            
    super("網(wǎng)格袋布局演示");
            setSize(
    250,150);
            p
    =new JPanel();
            gbc
    =new GridBagConstraints();
            gbl
    =new GridBagLayout();
            p.setLayout(gbl);
            getContentPane().add(p);
            ta
    =new JTextArea("我是文本域",5,10);
            b1
    =new JButton("我是按鈕b1.");
            b2
    =new JButton("我是按鈕b2");
            tf
    =new JTextField("我是文本框");
            l1
    =new JLabel("我是一個(gè)標(biāo)簽");
            l2
    =new JLabel("我是另一個(gè)標(biāo)簽");
            
    //布局JTextArea
            gbc.weightx=0;//指定如何分布額外的水平空間
            gbc.weighty=0;//指定如何分布額外的垂直空間
            
    //BOTH:在水平方向和垂直方向上同時(shí)調(diào)整組件大小
            
    //fill:當(dāng)組件的顯示區(qū)域大于它所請(qǐng)求的顯示區(qū)域的大小時(shí)使用此字段
            gbc.fill=GridBagConstraints.BOTH;
            addComponent(ta,gbl,gbc,
    0,0,1,3);
            
    //布局按鈕b1
            gbc.fill=GridBagConstraints.HORIZONTAL;
            addComponent(b1,gbl,gbc,
    1,0,2,1);
            
    //布局按鈕b2
            gbc.fill=GridBagConstraints.HORIZONTAL;
            addComponent(b2,gbl,gbc,
    1,1,2,1);
            setVisible(
    true);
            
    //布局文本框tf
            gbc.fill=GridBagConstraints.BOTH;
            addComponent(tf,gbl,gbc,
    1,2,2,1);
            setVisible(
    true);
            
    //布局標(biāo)簽l1
            gbc.fill=GridBagConstraints.BOTH;
            addComponent(l1,gbl,gbc,
    0,3,2,1);
            setVisible(
    true);
            
    //布局標(biāo)簽l2
            gbc.fill=GridBagConstraints.BOTH;
            addComponent(l2,gbl,gbc,
    1,3,2,1);
            setVisible(
    true);
            
        }

        
    public static void main(String[] args) {
            
    new GridBagLayoutDemo();
        }

    }

            §卡片布局管理器(CardLayout):
    import javax.swing.*;
    import java.awt.*;
    public class CardLayoutDemo extends JFrame{
        CardLayout cl;
        JPanel p;
        JButton b1,b2,b3,b4;
        
    public CardLayoutDemo(){
            
    super("卡片布局演示");
            setSize(
    150,250);
            cl
    =new CardLayout();
            p
    =new JPanel();
            p.setLayout(cl);
            getContentPane().add(p);
            b1
    =new JButton("我是第一張卡片");
            b2
    =new JButton("我是第二張卡片");
            b3
    =new JButton("我是第三張卡片");
            b4
    =new JButton("我是第四張卡片");
            p.add(
    "b1",b1);
            p.add(
    "b2",b2);
            p.add(
    "b3",b3);
            p.add(
    "b4",b4);
            setVisible(
    true);
            
    while(true){
                
    try {
                    Thread.sleep(
    2000);
                }
     catch (InterruptedException e) {
                    e.printStackTrace();
                }

                cl.next(p);
            }

            
        }

        
    public static void main(String[] args) {
            
    new CardLayoutDemo();
        }

    }
            §盒式布局管理器(BoxLayout):
    import java.awt.FlowLayout;
    import java.awt.TextField;
    import javax.swing.JButton;
    import javax.swing.JLabel;
    import javax.swing.Box;
    import javax.swing.JFrame;

    public class BoxLayoutDemo
    {
        
    public static void main(String args[])
        
    {
            JFrame frame
    =new JFrame("用戶登錄");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(
    300,200);
            TextField password
    =new TextField(15);
            password.setEchoChar(
    '*');

            Box left,right,top,bottom,base,basebox;

            top
    =Box.createHorizontalBox();
            top.add(
    new JLabel("用戶登錄"),JLabel.CENTER);

            left
    =Box.createVerticalBox();
            left.add(
    new JLabel("用戶名:"));
            left.add(Box.createVerticalStrut(
    8));
            left.add(
    new JLabel("密碼:"));

            right
    =Box.createVerticalBox();
            right.add(
    new TextField(10));
            right.add(Box.createVerticalStrut(
    8));
            right.add(password);

            bottom
    =Box.createHorizontalBox();
            bottom.add(
    new JButton("登錄"));
            bottom.add(Box.createVerticalStrut(
    10));
            bottom.add(
    new JButton("重置"));

            basebox
    =Box.createHorizontalBox();
            basebox.add(left);
            basebox.add(Box.createHorizontalStrut(
    10));
            basebox.add(right);

            base
    =Box.createVerticalBox();
            base.add(top);
            base.add(Box.createVerticalStrut(
    10));
            base.add(basebox);
            base.add(Box.createVerticalStrut(
    10));
            base.add(bottom);

            frame.setLayout(
    new FlowLayout());
            frame.add(base);
            frame.setVisible(
    true);
        }

    }
            §空布局管理器(自定義布局):
    import javax.swing.*;
    import java.awt.*;
    public class NullLayoutDemo extends JFrame{
        JPanel p;
        JButton b1,b2,b3,b4;
        
    public NullLayoutDemo(){
            
    super("自定義布局演示");
            setSize(
    250,150);
            p
    =new JPanel();
            p.setLayout(
    null);
            getContentPane().add(p);
            b1
    =new JButton("one");
            b1.setBounds(
    10,20,100,30);//設(shè)置的依次是x、y坐標(biāo),長(zhǎng)與寬
            b2=new JButton("two");
            b2.setBounds(
    120,20,100,30);
            b3
    =new JButton("three");
            b3.setBounds(
    10,70,100,30);
            b4
    =new JButton("four");
            b4.setBounds(
    120,70,100,30);
            p.add(b1);
            p.add(b2);
            p.add(b3);
            p.add(b4);
            setVisible(
    true);
            
        }

        
    public static void main(String[] args) {
            
    new NullLayoutDemo();
        }

    }
    11、事件處理
    (1)Java事件模型:事件模型的3個(gè)組件:事件、事件源和事件監(jiān)聽(tīng)器
    (2)事件處理的工作原理:
                    §事件源是一個(gè)能夠注冊(cè)監(jiān)聽(tīng)器,且可為監(jiān)聽(tīng)器發(fā)送事件對(duì)象的對(duì)象
                    §一個(gè)監(jiān)聽(tīng)器對(duì)象是一個(gè)實(shí)現(xiàn)了專門的監(jiān)聽(tīng)器接口的類實(shí)例
                    §當(dāng)事件發(fā)生時(shí),事件源將事件對(duì)象發(fā)送給事件源所注冊(cè)的監(jiān)聽(tīng)器(一個(gè)或多個(gè))
                    §監(jiān)聽(tīng)器對(duì)象使用事件對(duì)象的信息來(lái)確定做出的反應(yīng)
    (3)處理事件的一般步驟:
                    §定義要接收某事件的類并實(shí)現(xiàn)相應(yīng)的監(jiān)聽(tīng)器接口
                    §在事件源中注冊(cè)類
                    §接收對(duì)應(yīng)的事件對(duì)象,并通過(guò)監(jiān)聽(tīng)器接口中的方法進(jìn)行處理
    (4)事件類型:AWT事件分為兩大類,低級(jí)事件和高級(jí)事件,前者是基于組件和容器的事件,后者是基于語(yǔ)義的事件。
                    §低級(jí)事件:
                        ComponentEvent——組件事件,組件尺寸的變化和移動(dòng),是所有低層事件的基類。
                        ContainerEvent——容器事件,組件增加和刪除。
                        WindowEvent——窗口事件,窗口被激活、關(guān)閉或者還原。
                        FucousEvent——焦點(diǎn)事件,組件獲得焦點(diǎn)或者失去焦點(diǎn)。
                        KeyEvent——鍵盤事件,鍵盤的按下或釋放。
                        MouseEvent——鼠標(biāo)事件,鼠標(biāo)鍵被按下、釋放、鼠標(biāo)移動(dòng)或者托動(dòng)。
                        MouseWheelEvent——鼠標(biāo)滾輪被滾動(dòng)。
                    §高級(jí)事件:
                        ActionEvent——?jiǎng)幼魇录粹o單擊、TextField中按下Enter鍵、菜單選擇、選擇列表框等。
                        AdjustmentEvent——調(diào)節(jié)事件,在滾動(dòng)條上移動(dòng)滑塊和調(diào)節(jié)數(shù)值。
                        ItemEvent——選擇列表框中的項(xiàng)目。
                        TextEvent——文本事件,文本對(duì)象發(fā)生改變。
    (5)動(dòng)作事件示例程序:
    import javax.swing.*;
    import java.awt.event.*;
    public class ActionEventDemo extends JFrame implements ActionListener{
        
    //聲明組件
        JLabel lblTitle,lblUser,lblPass;
        JTextField txtUser;
        JPasswordField pwdPass;
        JButton btnLogin,btnExit;
        JPanel pnlMain;
        
    //構(gòu)造方法
        public ActionEventDemo(){
            
    super("用戶登錄");
            pnlMain
    =new JPanel();
            
    this.getContentPane().add(pnlMain);
            
    //實(shí)例化組件
            String address="G:\\00\\images\\";
            lblTitle
    =new JLabel(new ImageIcon(address+"welcome.gif"));
            lblUser
    =new JLabel("用戶名:");
            txtUser
    =new JTextField(12);
            lblPass
    =new JLabel("密碼:");
            pwdPass
    =new JPasswordField(12);
            
    //"登錄"按鈕
            Icon imgLogin=new ImageIcon(address+"login.gif");
            btnLogin
    =new JButton("登錄(L)",imgLogin);
            btnLogin.setMnemonic(
    'L');//鍵盤助記符
            btnLogin.setToolTipText("點(diǎn)擊登錄");//工具提示文字
            btnLogin.addActionListener(this);
            
    //"退出"按鈕
            Icon imgExit=new ImageIcon(address+"exit.gif");
            btnExit
    =new JButton("退出(x)",imgExit);
            btnLogin.setMnemonic(
    'X');
            btnExit.setToolTipText(
    "退出登錄");
            btnExit.addActionListener(
    this);
            
    //添加組件到面板
            pnlMain.add(lblTitle);
            pnlMain.add(lblUser);
            pnlMain.add(txtUser);
            pnlMain.add(lblPass);
            pnlMain.add(pwdPass);
            pnlMain.add(btnLogin);
            pnlMain.add(btnExit);
            
    //設(shè)置窗口屬性
            setSize(450,400);
            setResizable(
    false);
            setVisible(
    true);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }

        
    public void actionPerformed(ActionEvent ae){
            
    if(ae.getSource()==btnLogin){
                
    if(txtUser.getText().equals("admin")&&pwdPass.getText().equals("admin"))
                    JOptionPane.showMessageDialog(
    null,"歡迎登錄");
                
    else JOptionPane.showMessageDialog(null,"用戶名或密碼錯(cuò)誤");            
            }

            
    if(ae.getSource()==btnExit){
                System.exit(
    0);
            }

        }

        
    public static void main(String[] args) {
            
    new ActionEventDemo();
        }


    }

    (5)鍵盤事件示例程序:

    import java.awt.*;
    import java.awt.geom.*;
    import java.util.*;
    import java.awt.event.*;
    import javax.swing.*;

    public class KeyEventDemo {
     public static void main(String args[]) {
      SketchFrame frame = new SketchFrame();
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setVisible(true);
     }
    }

    class SketchFrame extends JFrame {
     public SketchFrame() {
      setTitle("鍵盤事件");
      setSize(300, 200);
      final SketchPanel panel = new SketchPanel();
      final Container contentPane = getContentPane();
      contentPane.add(panel);
     }
    }

    class SketchPanel extends JPanel {
     private Point2D last;
     private ArrayList lines;
     private static final int INCREMENT = 10;

     public SketchPanel() {
      last = new Point2D.Double(100, 100);// 設(shè)置開(kāi)始點(diǎn)坐標(biāo)
      lines = new ArrayList();
      KeyHandler listener = new KeyHandler();
      addKeyListener(listener);// 注冊(cè)事件監(jiān)聽(tīng)器
      setFocusable(true);
     }

     // 添加坐標(biāo)
     public void add(int dx, int dy) {
      Point2D end = new Point2D.Double(last.getX()
        + dx, last.getY() + dy);// 得到終點(diǎn)坐標(biāo)
      Line2D line = new Line2D.Double(last, end);
      lines.add(line);
      repaint();
      last = end;
     }

     // 畫(huà)圖方法
     public void paintComponent(Graphics g){
      super.paintComponent(g);
      Graphics2D g2=(Graphics2D)g;
      for(int i=0;i<lines.size();i++){
       g2.draw((Line2D)lines.get(i));
      }
     }

     private class KeyHandler implements KeyListener {
      // 按鍵被按下事件
      public void keyPressed(KeyEvent e) {
       int keyCode = e.getKeyCode();
       int d;
       d = INCREMENT;
       // 對(duì)小鍵盤方向鍵添加具體的事件響應(yīng)
       if (keyCode == KeyEvent.VK_LEFT)
        add(-d, 0);
       else if (keyCode == KeyEvent.VK_RIGHT)
        add(d, 0);
       else if (keyCode == KeyEvent.VK_UP)
        add(0, -d);
       else if (keyCode == KeyEvent.VK_DOWN)
        add(0, d);
      }

      public void keyReleased(KeyEvent e) {
      }

      // 按鍵被單擊事件監(jiān)聽(tīng)
      public void keyTyped(KeyEvent e) {
       char keyChar = e.getKeyChar();
       int d;
       if (Character.isUpperCase(keyChar)) {
        d = INCREMENT;
        keyChar = Character.toLowerCase(keyChar);
       } else
        d = INCREMENT;
        //為鍵盤“h、l、k、j“添加事件響應(yīng)
       if (keyChar == 'h')
        add(-d, 0);
       else if (keyChar == 'l')
        add(d, 0);
       else if (keyChar == 'k')
        add(0, -d);
       else if (keyChar == 'j')
        add(0, d);
      }
     }
    }

    (6)鼠標(biāo)事件示例程序:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class MouseEventDemo extends MouseMotionAdapter{
        JFrame frmMain;
        
    int intX,intY;
        JPanel pnlMain;
        JLabel lblX,lblY;
        JTextField txtX,txtY;
        GridLayout glMain;
        
    public MouseEventDemo(){
            frmMain
    =new JFrame("鼠標(biāo)事件演示");
            pnlMain
    =new JPanel();
            frmMain.getContentPane().add(pnlMain);
            glMain
    =new GridLayout(2,2);
            pnlMain.setLayout(glMain);
            lblX
    =new JLabel("當(dāng)前鼠標(biāo)X坐標(biāo):");
            lblY
    =new JLabel("當(dāng)前鼠標(biāo)Y坐標(biāo):");
            txtX
    =new JTextField(5);
            txtY
    =new JTextField(5);
            pnlMain.add(lblX);
            pnlMain.add(txtX);
            pnlMain.add(lblY);
            pnlMain.add(txtY);
            
    //定義、綁定鼠標(biāo)事件監(jiān)聽(tīng)器對(duì)象
            frmMain.addMouseMotionListener(this);
            frmMain.setSize(
    250,150);
            frmMain.setVisible(
    true);
        }

        
    //重寫(xiě)MmouseMotionActionListEner接口中指定方法
        public void mouseMoved(MouseEvent e){
            intX
    =e.getX();
            intY
    =e.getY();
            txtX.setText(String.valueOf(intX));
            txtY.setText(String.valueOf(intY));
        }

        
    public static void main(String args[]){
            MouseEventDemo med
    =new MouseEventDemo();
        }
        
    }
    主站蜘蛛池模板: 老司机午夜精品视频在线观看免费 | 亚洲国产激情在线一区| 一级做a爰片性色毛片免费网站| 91成年人免费视频| 亚洲精品无码久久久影院相关影片 | 亚洲人成网站观看在线播放| 亚洲a级在线观看| 亚洲中文字幕无码一区| 亚洲中文久久精品无码| 久久精品亚洲日本波多野结衣| 2020因为爱你带字幕免费观看全集 | 亚洲欧洲无码一区二区三区| 一级a性色生活片久久无少妇一级婬片免费放 | 在线观看av永久免费| 亚洲an天堂an在线观看| 老司机精品免费视频| 免费在线精品视频| 亚洲国产精品精华液| 成年免费大片黄在线观看岛国 | 亚洲色图黄色小说| 国产免费一区二区三区在线观看 | 亚洲AV无码专区国产乱码电影| 黄网站色视频免费看无下截| 成人黄18免费视频| 亚洲一级免费视频| 在线免费观看国产| 久久亚洲精品中文字幕无码| 三年片免费高清版| 国产成人精品日本亚洲专区 | 69堂人成无码免费视频果冻传媒| 亚洲AV无码专区国产乱码4SE| GOGOGO高清免费看韩国| 亚洲精品成人网久久久久久| 小说区亚洲自拍另类| 免费无码不卡视频在线观看| 亚洲国产激情在线一区| 午夜宅男在线永久免费观看网| 91亚洲国产成人久久精品网址| 91高清免费国产自产拍2021| 亚洲AV日韩AV天堂一区二区三区 | 亚洲色图在线观看|