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 相似,都可以指定水平或者垂直的尺寸,但是 它可以設定最小,最大和優先尺寸。