1. 程式人生 > >Java介面程式與使用者互動

Java介面程式與使用者互動



使用者互動:

 JOptionPane

 
    訊息對話方塊
    showMessageDialog
    確認對話方塊
     showConfirmDialog   返回整型
    輸入對話方塊
     showInputDialog   //使用者輸入  返回字串 可用Interger.parseInterger等轉化為其他型別

  例程:

import javax.swing.JOptionPane;

public class JavaApp {
 public static void main(String[] args) {
  //彈出訊息對話方塊
  JOptionPane.showMessageDialog(null, "hello world !");
  //彈出確認對話方塊
  int  option=JOptionPane.showConfirmDialog(null, "1+1=2?");
  if(option==JOptionPane.YES_OPTION)
   System.out.println("你選擇的是Yes");
  else
   System.out.println("你選擇的是No");
  String name=JOptionPane.showInputDialog("請輸入你的名字:");
  int    age =Integer.parseInt(JOptionPane.showInputDialog("請輸入你的年齡:"));
  JOptionPane.showMessageDialog(null, "你好,"+name+"\n你今年"+age+"歲了");
 }
}


構建介面程式: JFrame 


  步驟:


         建立視窗物件    new JFrame
         設定佈局        setLayout 
         新增元件        add
         設定事件監聽    addActionListener  內部類 implements ActionListener重寫actionPerformed方法


  輔助窗體設定:


          設定位置          setLoction  //不設預設(0,0)
          設定大小          setSize     //設定寬和高
          設定可見性        setVisable  //必須為true才可見
          設定是否固定視窗  setResizable
          設定預設關閉操作  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)


佈局管理器:預設為BorderLayout


    BorderLayout  邊框式佈局 將整個容器劃分成東南西北中五個方位來放置控制元件
    FlowLayout  流動式佈局   按照順序一個接一個由左向右的水平放置在容器中
    GridLayout    網格式佈局 將整個容器劃分成一定的行和一定的列
    BoxLayout     箱式式佈局 可以指定在容器中是否對控制元件進行水平或者垂直放置
    GridBagLayout 網格包佈局 一種更強大更靈活的佈局方式
構建相應程式碼:


    視窗程式: 

  import java.awt.BorderLayout;
  import javax.swing.JButton;
  import javax.swing.JFrame;
  public class JFrameLayout {
      public static void main(String[] args) {
  JFrame jFrame=new JFrame("Hello World");
 
  jFrame.setLocation(100, 100);
  jFrame.setSize(200, 200);  //後面的相應改了大小
  jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  jFrame.setVisible(true);
        }
      }



   1、BorderLayout 


    視窗程式里加入程式碼:

  jFrame.setLayout(new BorderLayout());
  jFrame.add(new JButton("東"),BorderLayout.EAST);
  jFrame.add(new JButton("西"),BorderLayout.WEST);
  jFrame.add(new JButton("南"),BorderLayout.SOUTH);
  jFrame.add(new JButton("北"),BorderLayout.NORTH);
  jFrame.add(new JButton("中"),BorderLayout.CENTER);



      效果如下
          


   
   2、 FloatLayout


 視窗程式里加入程式碼: 

     jFrame.setLayout(new FlowLayout());
     jFrame.add(new JButton("one"));
     jFrame.add(new JButton("two"));
     jFrame.add(new JButton("three"));
     jFrame.add(new JButton("four"));
     jFrame.add(new JButton("five"));

  效果如下
            


   3、GridLayout


    視窗程式里加入程式碼:
   jFrame.setLayout(new java.awt.GridLayout(4, 5));
   for(int i=0;i<4;i++)
    for(int j=1;j<=5;j++)
     jFrame.add(new JButton("button"+(5*i+j)));
       效果如下:
        


    4、BoxLayout  和FlowLayout相似,但比FlowLayout更靈活

     JPanel jPanel=new JPanel();
     jPanel.setLayout(new BoxLayout(jPanel,BoxLayout.Y_AXIS));
     jPanel.add(Box.createVerticalStrut(50));
     jPanel.add(new JButton("one"));
     jPanel.add(new JButton("two"));
     jPanel.add(new JButton("three"));
     jPanel.add(new JButton("four"));
     jPanel.add(new JButton("five"));
     jFrame.add(jPanel);


         
       
BoxLayout 往往和 Box 這個容器結合在一起使用,這麼做的理由是,BoxLayout 是把控制元件以水平或者垂直的方向一個接一個的放置,如果要調整這些控制元件之間的空間,就會需要使用 Box 容器提供的透明的元件作為填充來填充控制元件之間的空間,從而達到調整控制元件之間的間隔空間的目的。Box 容器提供了 4 種透明的元件,分別是 rigid area、strut、glue、filler。Box 容器分別提供了不同的方法來建立這些元件。這四個元件的特點如下:
•Rigid area 是一種使用者可以定義水平和垂直尺寸的透明元件;
•strut 與 rigid area 類似,但是使用者只能定義一個方向的尺寸,即水平方向或者垂直方           向,不能同時定義水平和垂直尺寸;
•當用戶將 glue 放在兩個控制元件之間時,它會盡可能的佔據兩個控制元件之間的多餘空間,從而將兩  個控制元件擠到兩邊;
•Filler 是 Box 的內部類,它與 rigid area 相似,都可以指定水平或者垂直的尺寸,但是 它可以設定最小,最大和優先尺寸。

5、GridBagLayout  頁面佈局的一個難點(後面會轉載一篇有詳細說明的部落格)
 
 一般程式不會採用一個佈局,而是多個佈局的整合,通過JPanel等連線起來
 
常用圖形元件:
      JPanel   JButton  JTextArea JPasswordField
      JLable   JCheckBox JRadioButton  JTextField
      JSlider  JComboBox JProgressBar  JScrollPane
      JTable   等