1. 程式人生 > 資訊 >傳音宣佈 Infinix 全球首發光繪皮革技術:使用者可“以光繪圖”來定製後蓋

傳音宣佈 Infinix 全球首發光繪皮革技術:使用者可“以光繪圖”來定製後蓋

GUI程式設計

  • 元件:

    • 視窗

    • 彈窗

    • 面板

    • 文字框

    • 列表框

    • 按鈕

    • 圖片

    • 監聽事件

    • 滑鼠事件、鍵盤事件

    • 破解工具

1、簡介

  • GUI的核心技術:Swing AWT

    1.介面不美觀

    2.需要jre環境

  • 用處:

    • 可以寫一些自己的小工具

    • 工作時候可能需要維護到swing介面,概率極小

    • 瞭解MVC架構,瞭解監聽

2、AWT

2.1 AWT介紹

  1. 包含了很多類和介面:GUI

  2. 元素,視窗,按鈕,文字框

  3. java.awt

2.2元件和容器

2.3佈局管理器

1.Frame

/**
* GUI的第一個介面
*/
public class TestFrame {
   public static void main(String[] args) {
       //Frame JDK
       Frame frame = new Frame("第一個java影象介面視窗");
       //需要設定可見性
       frame.setVisible(true);
       //設定視窗大小
       frame.setSize(400,400);
       //設定背景顏色
       frame.setBackground(new Color(18, 175, 238));
       //彈出的初始位置
       frame.setLocation(20,20);
       //設定大小固定
       frame.setResizable(false);
  }
}

 

問題:彈窗關不掉;解決:直接停止執行

回顧封裝

import java.awt.*;
//封裝
//展示多個視窗 new
public class TestFrame2 {
   public static void main(String[] args) {
       //new
       new MyFrame(100,100,200,200,Color.blue);
       new MyFrame(100,200,200,200,Color.yellow);
       new MyFrame(200,100,200,200,Color.green);
       new MyFrame(200,200,200,200,Color.white);
  }
}
class MyFrame extends Frame {
   static int id= 0;//定義一個計數器,可能需要多個視窗
   public MyFrame(int x,int y,int w,int h,Color color){
       super("Myframe+"+(++id));//呼叫父類方法
       setBackground(color);
       setBounds(x,y,w,h);
       setVisible(true);//可見性
  }
}
  1. Panel

    //panel可以看成是一個空間,但是不能單獨的的存在
    public class TestPanel {
       public static void main(String[] args) {
           Frame frame = new Frame();
           //佈局的概念
           Panel panel = new Panel();
           //設定佈局
           frame.setLayout(null);
           //座標
           frame.setBounds(300,300,600,800);
           //背景
           frame.setBackground(new Color(252, 114, 114));
           //panel設定座標,相對於frame
           panel.setBounds(50,50,400,400);
           panel.setBackground(new Color(52, 170, 201, 141));
           //frame.add()
           frame.add(panel);
           //需要設定可見性
           frame.setVisible(true);
         // panel.setVisible(true);
           //監聽事件:監聽視窗關閉事件,System.exit(0)
           //介面卡模式:
           frame.addWindowListener(new WindowAdapter() {
               //視窗點選關閉的時候需要做的事
               @Override
               public void windowClosing(WindowEvent e) {
                   //結束程式
                   System.exit(0);
              }
          });
      }
    }

解決了關閉問題

3.佈局方式:

  • 流式佈局

    //佈局方式:流式佈局
    public class TestFlowLayout {
       public static void main(String[] args) {
           Frame frame = new Frame();
           //元件-按鈕
           Button button1 = new Button("button1");
           Button button2 = new Button("button2");
           Button button3 = new Button("button3");
           //設定為流式佈局
          // frame.setLayout(new FlowLayout ());//居中
           frame.setLayout(new FlowLayout(FlowLayout.RIGHT));//居右
           //frame.setLayout(new FlowLayout());
           frame.setSize(200,300);
           //把按鈕新增上去
           frame.add(button1);
           frame.add(button2);
           frame.add(button3);

           frame.setVisible(true);
           //監聽事件:監聽視窗關閉事件,System.exit(0)
           //介面卡模式:
           frame.addWindowListener(new WindowAdapter() {
               //視窗點選關閉的時候需要做的事
               @Override
               public void windowClosing(WindowEvent e) {
                   //結束程式
                   System.exit(0);
              }
          });
      }
    }
  • 東西南北中佈局

    //東西南北中佈局
    public class TestBorderLayout {
       public static void main(String[] args) {
           Frame frame = new Frame();

           Button east= new Button("east");
           Button west= new Button("west");
           Button south= new Button("south");
           Button north= new Button("north");
           Button center= new Button("Center");
           //frame.add()
           frame.add(east,BorderLayout.EAST);
           frame.add(west,BorderLayout.WEST);
           frame.add(south,BorderLayout.SOUTH);
           frame.add(north,BorderLayout.NORTH);
           frame.add(center,BorderLayout.CENTER);

           frame.setSize(200,200);
           frame.setVisible(true);
           //介面卡模式:
           frame.addWindowListener(new WindowAdapter() {
               //視窗點選關閉的時候需要做的事
               @Override
               public void windowClosing(WindowEvent e) {
                   //結束程式
                   System.exit(0);
              }
          });
      }
    }

     

  • 表格佈局

    /**
    * 表格佈局
    */
    public class TestGridLayout {
       public static void main(String[] args) {
           Frame frame = new Frame("TestGridLayout");

           Button btn1= new Button("btn1");
           Button btn2= new Button("btn2");
           Button btn3= new Button("btn3");
           Button btn4= new Button("btn4");

           frame.setLayout(new GridLayout(2,2));

           frame.add(btn1);
           frame.add(btn2);
           frame.add(btn3);
           frame.add(btn4);

           frame.pack();//java函式 自適應
           frame.setVisible(true);

      }
    }

2.4監聽事件

public class TestActionEvent {
   public static void main(String[] args) {
       //按下按鈕,觸發一些事件
       Frame frame = new Frame();
       Button button = new Button();
       //因為addActionListener需要一個ActionListener,所以需要構造一個
       MyActionListen myActionListen = new MyActionListen();
       button.addActionListener(myActionListen );

       frame.add(button,BorderLayout.CENTER);
       frame.pack();//自適應
       frame.setVisible(true);//可見性;
       windowClose(frame);
  }
   //關閉窗體的事件
   public static void windowClose(Frame frame) {
       frame.addWindowListener(new WindowAdapter() {
           @Override
           public void windowClosing(WindowEvent e) {
               System.exit(0);
          }
      });
  }
}
//事件監聽
class MyActionListen implements ActionListener{

   @Override
   public void actionPerformed(ActionEvent e) {
       System.out.println("hello hh");
  }
}
  • 兩個按鈕實現同一個監聽

**
* 兩個按鈕  實現同一個監聽
*/
public class TestActionTwo {
   public static void main(String[] args) {
       Frame frame = new Frame("開始-停止");
       Button button1 = new Button("START");
       Button button2 = new Button("STOP");

       MyMonitor myMonitor = new MyMonitor();
       button1.addActionListener(myMonitor);
       button2.addActionListener(myMonitor);
       //可以顯示的定義觸發會返回的命令,如果不顯示定義,則會走預設的值
       //可以多個按鈕只寫一個監聽類
       button1.setActionCommand("shen");
       button2.setActionCommand("shen");


       frame.add(button1,BorderLayout.NORTH);
       frame.add(button2,BorderLayout.SOUTH);
       windowClose(frame);
       frame.pack();
       frame.setVisible(true);
  }
}
//監聽類
class MyMonitor implements ActionListener{

   @Override
   public void actionPerformed(ActionEvent e) {
       System.out.println("點選了按鈕:"+e.getActionCommand());
  }
}

2.5輸入框TextField監聽

public class TestText01 {
   public static void main(String[] args) {
       //主類只幹一件事情,啟動
       MyFrame myFrame = new MyFrame();
       windowClose(myFrame);//這裡可以關閉視窗呀,啊哈哈,但是在MyFrame中就不可以哦
  }
}

class MyFrame extends Frame {
   public MyFrame(){//構造器
       TextField textField = new TextField();//文字框
       add(textField);

       //監聽這個文字框輸入的文字
       MyActionListener2 listener2 = new MyActionListener2();
       //按下enter, 就會觸發這個輸入框的事件
       textField.addActionListener(listener2);

       //設定替換編碼
       textField.setEchoChar('*');
       pack();
       setVisible(true);

  }
}
class MyActionListener2 implements ActionListener{

   @Override
   public void actionPerformed(ActionEvent e) {
     TextField textField = (TextField)e.getSource();//獲取一些資源 返回的一些物件
       System.out.println(textField.getText());//獲得輸入框的文字
       textField.setText("");//null""
  }
}

2.6簡易計算器,組合+內部類回顧學習

  • 組合

    當前程式碼:

    /**
    * 簡易計算器
    */
    public class TestCalc {
       public static void main(String[] args) {
             new Calculator();
             windowClose(new Calculator());
      }
    }
    //計算器類
    class Calculator extends Frame {
       public Calculator() {
           //3個文字框
           TextField num1 = new TextField(10);
           TextField num2 = new TextField(10);
           TextField num3 = new TextField(10);

           //一個按鈕
           Button button = new Button("=");
           button.addActionListener(new MyCalculatorListener(num1,num2,num3));//實現等號

           //1個標籤
           Label label = new Label("+");

           //佈局
           setLayout(new FlowLayout());
           add(num1);
           add(label);
           add(num2);
           add(button);
           add(num3);

           pack();
           setVisible(true);

      }
    }
    //監聽器類
    class MyCalculatorListener implements ActionListener{
       //獲取三個變數
       private TextField num1,num2,num3;

       public MyCalculatorListener(TextField num1, TextField num2, TextField num3) {
           this.num1 = num1;
           this.num2 = num2;
           this.num3 = num3;
      }

       @Override
       public void actionPerformed(ActionEvent e) {
           //1.獲得加數和被加數
           int n1=Integer.parseInt(num1.getText());
           int n2=Integer.parseInt(num2.getText());
           //2.將這個值進行+運算後,放到第三個框
           num3.setText(""+(n1+n2));
           //3.將前兩個框職位空
           num1.setText("");
           num2.setText("");
      }
    }

    改進之後:完全面向物件的寫法

    /**
    * 簡易計算器
    */
    public class TestCalc {
       public static void main(String[] args) {
           Calculator calculator = new Calculator();
           calculator.loadFrame();
           windowClose(calculator);
      }
    }
    //計算器類
    class Calculator extends Frame {
           //屬性
           TextField num1,num2,num3;
           //方法
           public void loadFrame(){
               //3個文字框
               num1 = new TextField(10);
               num2 = new TextField(10);
               num3 = new TextField(10);
               Button button = new Button("=");
               Label label = new Label("+");

               button.addActionListener(new MyCalculatorListener(this));//實現等號

               //佈局
               setLayout(new FlowLayout());
               add(num1);
               add(label);
               add(num2);
               add(button);
               add(num3);

               pack();
               setVisible(true);

          }
    }
    //監聽器類
    class MyCalculatorListener implements ActionListener{
       //獲取三個變數
       Calculator calculator=null;//組合,在一個類中組合另一個類

       public MyCalculatorListener( Calculator calculator) {
           this.calculator=calculator;
      }

       @Override
       public void actionPerformed(ActionEvent e) {
           //1.獲得加數和被加數
           //2.將這個值進行+運算後,放到第三個框
           //3.將前兩個框職位空
           int n1=Integer.parseInt(calculator.num1.getText());
           int n2=Integer.parseInt(calculator.num2.getText());
           calculator.num3.setText(""+(n1+n2));
           calculator.num1.setText("");
           calculator.num2.setText("");
      }
    }

    最終版本:改進為內部類

    /**
    * 簡易計算器
    */
    public class TestCalc {
       public static void main(String[] args) {
           Calculator calculator = new Calculator();
           calculator.loadFrame();
           windowClose(calculator);
      }
    }
    //計算器類
    class Calculator extends Frame {
           //屬性
           TextField num1,num2,num3;
           //方法
           public void loadFrame(){
               //3個文字框
               num1 = new TextField(10);
               num2 = new TextField(10);
               num3 = new TextField(10);
               Button button = new Button("=");
               Label label = new Label("+");

               button.addActionListener(new MyCalculatorListener());//實現等號

               //佈局
               setLayout(new FlowLayout());
               add(num1);
               add(label);
               add(num2);
               add(button);
               add(num3);

               pack();
               setVisible(true);
          }
       //監聽器類
       //內部類:最大的好處就是暢通無阻的使用外部類的屬性和方法
       private class MyCalculatorListener implements ActionListener{
           //獲取三個變數
           Calculator calculator=null;//組合,在一個類中組合另一個類

           public MyCalculatorListener() {
               this.calculator=calculator;
          }

           @Override
           public void actionPerformed(ActionEvent e) {
               //1.獲得加數和被加數
               //2.將這個值進行+運算後,放到第三個框
               //3.將前兩個框職位空
               int n1=Integer.parseInt(num1.getText());
               int n2=Integer.parseInt(num2.getText());
               num3.setText(""+(n1+n2));
               num1.setText("");
               num2.setText("");
          }
      }
    }

2.7畫筆Paint

//畫筆
public class TestPaint {
   public static void main(String[] args) {
       MyPaint myPaint = new MyPaint();
       myPaint.loadFrame();
       windowClose(myPaint);

  }
}
class MyPaint extends Frame{
   public void loadFrame(){
       setBounds(200,200,600,500);
       setVisible(true);
  }
   //畫筆
   @Override
   public void paint(Graphics g) {
      // super.paint(g);
       //畫筆 需要有顏色 可以畫畫
       g.setColor(Color.blue);
       g.drawOval(100,100,100,100);
      //養成習慣,畫筆用完要恢復到最初的顏色
  }
}

2.8滑鼠監聽事件

/**
* 滑鼠監聽事件
*/
public class TestMouseListener {
   public static void main(String[] args) {
       MyFrame2 myFrame = new MyFrame2("畫圖");
  }
}
//自己的類
class MyFrame2 extends Frame{
   //畫畫需要畫筆,需要監聽滑鼠噹噹前的位置,需要集合來儲存這個點
   ArrayList points;

   public MyFrame2(String title){
       super(title);
       setBounds(200,200,400,400);
       //存滑鼠點選的點
       points=new ArrayList<>();

       setVisible(true);
       //滑鼠監聽器,正對這個視窗
       this.addMouseListener(new MyMouseListener());
  }

   @Override
   public void paint(Graphics g) {
       //畫畫,監聽滑鼠的事件
       Iterator iterator = points.iterator();
       while(iterator.hasNext()){
           Point point = (Point) iterator.next();
           g.setColor(Color.blue);
           g.fillOval(point.x,point.y,10,10);
      }
  }
   //新增一個點到介面上
   public void addPaint(Point point){
       points.add(point);
  }
   //介面卡模式
   private class MyMouseListener extends MouseAdapter{
     //滑鼠 按下 彈起 按住不放

       @Override
       public void mousePressed(MouseEvent e) {
           MyFrame frame = (MyFrame) e.getSource();
           //這裡我們點選的時候就會在畫面上產生一個點
           //這個點就是滑鼠的點
           addPaint(new Point(e.getX(),e.getY()));
           //每次點選滑鼠都需要重新畫一遍
           frame.repaint();
      }
  }
}

2.9視窗監聽

/**
* 監聽視窗
*/
public class TestWindow {
   public static void main(String[] args) {
       new WindowFrame();
  }
}
class WindowFrame extends Frame {
   public WindowFrame(){
       setBackground(Color.blue);
       setBounds(200,200,200,200);
       setVisible(true);
       //第一種方法 內部類
       //addWindowListener(new MyWindowListener());
       //第二種方法:匿名內部類
       this.addWindowListener(new WindowAdapter(){
//                                   @Override
//                                   public void windowClosing(WindowEvent e) {
//                                       setVisible(false);//隱藏視窗,通過按鈕隱藏當前視窗
//                                       System.exit(0);//正常退出
//                                   }
           //重寫一些方法
           @Override//關閉
           public void windowClosing(WindowEvent e) {
               System.out.println("windowClosing");
          }
           @Override//啟用
           public void windowActivated(WindowEvent e) {
               System.out.println("windowActivated");
          }
      });
  }
//   //內部類
//   class MyWindowListener extends WindowAdapter {
//       @Override
//       public void windowClosing(WindowEvent e) {
//           setVisible(false);//隱藏視窗,通過按鈕隱藏當前視窗
//           System.exit(0);//正常退出
//       }
//   }
}

2.10鍵盤監聽

/**
* 鍵盤監聽
*/
public class TestKey {
   public static void main(String[] args) {
      new KeyFrame();
  }
}
class KeyFrame extends Frame{
   public KeyFrame() {
       setBounds(200,200,200,200);
       setVisible(true);
       //匿名內部類
       this.addKeyListener(new KeyAdapter() {
           @Override
           public void keyPressed(KeyEvent e) {
               //獲得鍵盤下的鍵是哪一個,當前的碼
               int keyCode = e.getKeyCode();//不需要去記當前這個值,直接用靜態屬性VK_XXX
               System.out.println(keyCode);
               if(keyCode==KeyEvent.VK_UP){
                   System.out.println("按下了上鍵");
              }
               //根據按下不同操作,產生不同結果
          }
      });
  }
}

3.swing

3.1視窗、標籤

//視窗、標籤
public class JFrameDemo {
//init();初始化
public void init(){
//頂級視窗
JFrame jf = new JFrame("JFrame視窗");
jf.setVisible(true);
jf.setBounds(200,200,200,200);
jf.setBackground(Color.blue);
//設定文字JLable
JLabel label = new JLabel("狂神小課堂");

jf.add(label);

//關閉事件
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}

public static void main(String[] args) {
//建立一個視窗
JFrameDemo demo = new JFrameDemo();
demo.init();
}

標籤居中

public class JFrameDemo02 {
   public static void main(String[] args) {
       new MyJFrame().init();
  }
}
class MyJFrame extends JFrame{
   public void init(){
       setVisible(true);
       setBounds(200,200,200,200);
       //設定文字JLable
       JLabel label = new JLabel("狂神小課堂");
       add(label);

       //讓文字標籤居中
       label.setHorizontalAlignment(SwingConstants.CENTER);
       //獲得一個容器
       Container container = this.getContentPane();
       container.setBackground(Color.YELLOW);
  }
}

3.2彈窗

/**
*彈窗,JDialog 預設有關閉事件
*/
//主視窗
public class DialogDemo extends JFrame {
   public DialogDemo(){
       this.setVisible(true);
       this.setSize(200,200);
       this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

       //JFrame 放東西 容器
       Container container = this.getContentPane();
       //絕對佈局
       container.setLayout(null);

       //按鈕
       JButton button = new JButton("點選彈出一個對話方塊");
       button.setBounds(500,300,300,620);

       //點選這個按鈕的時候,彈出一個彈窗
       button.addActionListener(new ActionListener() {//監聽器
           @Override
           public void actionPerformed(ActionEvent e) {
               //彈窗
              new MyDialogDemo();
          }
      });
       container.add(button);
  }

   public static void main(String[] args) {
       new DialogDemo();
  }
}
//彈窗的視窗
class MyDialogDemo extends JDialog{
   public MyDialogDemo() {
       this.setVisible(true);
       this.setBounds(100,100,200,200);
       //this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

       Container container = this.getContentPane();
       container.setLayout(null);
       container.add(new Label("java yyds"));
  }
}

3.3標籤

  • label

    new Label("xxx")
  • icon

    • 圖示Icon

      //圖示  ,需要實現類  Frame繼承
      public class IconDemo extends JFrame implements Icon {
         private int width;
         private int height;

         public IconDemo(){
        }
         public IconDemo(int width, int height){
             this.width = width;
             this.height = height;
        }


         public void init(){//初始化
         IconDemo iconDemo=new IconDemo(15,15);
         //圖示放在標籤,也可以放在按鈕上
             JLabel label = new JLabel("icontest",iconDemo,SwingConstants.CENTER);

             Container container=this.getContentPane();
             container.add(label);

             this.setVisible(true);
             this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        }

         public static void main(String[] args) {
            new IconDemo().init();
        }

         @Override
         public void paintIcon(Component c, Graphics g, int x, int y) {
             g.fillOval(x,y,width,height);
        }

         @Override
         public int getIconWidth() {
             return this.width;
        }

         @Override
         public int getIconHeight() {
             return this.height;
        }
      }
    • 圖片Icon

      public class ImageIconDemo extends JFrame {
         public ImageIconDemo(){
             //獲取圖片的地址
             JLabel label = new JLabel("ImageIcon");
             URL url = ImageIconDemo.class.getResource("IMG_1639.JPG");//獲取當前類下的資源的地址

             ImageIcon imageIcon = new ImageIcon(url);
             label.setIcon(imageIcon);
             label.setHorizontalAlignment(SwingConstants.CENTER);

             Container container = getContentPane();
             container.add(label);

             setVisible(true);
             setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
             setBounds(100,100,200,200);
        }

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

3.4面板

/**
* 面板
*/
public class JPanelDemo extends JFrame {
   public JPanelDemo(){
       Container container = getContentPane();
       container.setLayout(new GridLayout(1,1,10,10));

       JPanel panel = new JPanel(new GridLayout(2,1));

       Component component = panel.add(new JButton("1"));

       container.add(component);

       setVisible(true);
       setBounds(100,100,100,100);
       setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  }

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

/**
* 有滾動條
*/
public class JScrollDemo extends JFrame {
   public JScrollDemo(){
       Container container = this.getContentPane();

       //文字域
       JTextArea textArea = new JTextArea(20, 50);
       textArea.setText("學Java");
       //Scroll面板
       JScrollPane scrollPane = new JScrollPane(textArea);
       container.add(scrollPane);

       this.setVisible(true);
       this.setBounds(100,100,300,300);
       this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  }

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

3.5按鈕

  • 圖片按鈕

    /**
    * 按鈕
    */
    public class JButtonDemo01 extends JFrame {
       public JButtonDemo01(){
           Container container = getContentPane();
           //獲取圖片資源
           URL url = JButtonDemo01.class.getResource("2.png");
           Icon icon = new ImageIcon(url);

           //把圖示放在按鈕上
           JButton button = new JButton();
           button.setIcon(icon);
           button.setToolTipText("圖片按鈕");

           //add
           container.add(button);

           this.setVisible(true);
           this.setBounds(100,100,300,300);
           this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
      }

       public static void main(String[] args) {
           new JButtonDemo01();
      }
    }
  • 單選按鈕

    /**
    *單選按鈕
    */
    public class JButtonDemo02 extends JFrame{
       public JButtonDemo02(){
           Container container = getContentPane();
           //獲取圖片資源
           URL url = JButtonDemo01.class.getResource("2.png");
           Icon icon = new ImageIcon(url);

           //單選框
           JRadioButton jRadioButton1 = new JRadioButton("JRadioButton1");
           JRadioButton jRadioButton2 = new JRadioButton("JRadioButton2");
           JRadioButton jRadioButton3 = new JRadioButton("JRadioButton3");

           //把框放在按鈕上,由於只能選擇一個,所以要建一個組
           ButtonGroup buttonGroup = new ButtonGroup();
           buttonGroup.add(jRadioButton1);
           buttonGroup.add(jRadioButton2);
           buttonGroup.add(jRadioButton3);

           //add
           container.add(jRadioButton1,BorderLayout.SOUTH);
           container.add(jRadioButton2,BorderLayout.NORTH);
           container.add(jRadioButton3,BorderLayout.CENTER);

           this.setVisible(true);
           this.setBounds(100,100,300,300);
           this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
      }

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

    }

     

  • 複選按鈕

    /**
    * 多選框
    */
    public class JButtonDemo03 extends JFrame{
       public JButtonDemo03(){
           Container container = getContentPane();
           //獲取圖片資源
           URL url = JButtonDemo01.class.getResource("2.png");
           Icon icon = new ImageIcon(url);

           //多選框
           JCheckBox checkBox1 = new JCheckBox("JCheckBox1");
           JCheckBox checkBox2 = new JCheckBox("JCheckBox2");
           JCheckBox checkBox3 = new JCheckBox("JCheckBox3");

           container.add(checkBox1,BorderLayout.SOUTH);
           container.add(checkBox2,BorderLayout.NORTH);
           container.add(checkBox3,BorderLayout.CENTER);

           this.setVisible(true);
           this.setBounds(100,100,300,300);
           this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
      }

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

     

3.6列表

  • 下拉框

    /**
    * 下拉框JComboBox
    */
    public class TestComboboxDemo extends JFrame {
       public TestComboboxDemo() {
           Container container = getContentPane();

           //code
           JComboBox status = new JComboBox();
           status.addItem(null);
           status.addItem("正在上映");
           status.addItem("敬請期待");
           status.addItem("已下架");

           container.add(status);


           setVisible(true);
           setSize(300,400);
           setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
      }

       public static void main(String[] args) {
           new TestComboboxDemo();
      }
    }
  • 列表框

    /**
    * 列表框JList
    */
    public class TestComboboxDemo02 extends JFrame {
       public TestComboboxDemo02() {
           Container container = getContentPane();

           //code
           //生成列表的內容
           //String[] contents = {"1","2","3"};
           Vector contents = new Vector();
           //列表中需要放內容
           JList list = new JList(contents);
           contents.add("熊大");
           contents.add("熊二");
           contents.add("光頭強");

           container.add(list);


           setVisible(true);
           setSize(300,400);
           setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
      }

       public static void main(String[] args) {
           new TestComboboxDemo02();
      }
    }
  • 用途

    1、選擇地區,或者一個單個選項

    2、列表,展示資訊,一般是動態擴容

3.7文字框

  • 文字框

    /**
    * 文字框
    */
    public class TestTextDemo01 extends JFrame {
       public TestTextDemo01() {
           Container container = getContentPane();

           //code
           JTextField textField1 = new JTextField("熊大");
           JTextField textField2 = new JTextField("熊二");

           container.add(textField1,BorderLayout.CENTER);
           container.add(textField2,BorderLayout.NORTH);

           setVisible(true);
           setSize(500,300);
           setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
      }

       public static void main(String[] args) {
           new TestTextDemo01();
      }
    }
  • 密碼框

    /**
    * 密碼框
    */
    public class TestTextDemo02 extends JFrame {
       public TestTextDemo02() {
           Container container = getContentPane();

           //code
           JPasswordField field = new JPasswordField();
           field.setEchoChar('*');
           container.add(field);

           setVisible(true);
           setSize(500,300);
           setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
      }

       public static void main(String[] args) {
           new TestTextDemo02();
      }
    }
  • 文字域

    /**
    * 有滾動條
    * 文字域
    */
    public class JScrollDemo extends JFrame {
       public JScrollDemo(){
           Container container = this.getContentPane();

           //文字域
           JTextArea textArea = new JTextArea(20, 50);
           textArea.setText("學Java");
           //Scroll面板
           JScrollPane scrollPane = new JScrollPane(textArea);
           container.add(scrollPane);

           this.setVisible(true);
           this.setBounds(100,100,300,300);
           this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
      }

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