---
# System prepended metadata

title: Windowbuilder&GUI

---

# Windowbuilder&GUI
## Windowbuilder的下載方法
![](https://i.imgur.com/z4W2Y5y.png)
## 一個GUI程式的目錄開法
- GuiProject
    - src
        - tw.com.xxx.controller
            - CountController.java
        - tw.com.xxx.model
            - CountNumber.java
        - tw.com.xxx.view
            - CountView.java(Jframe)
        - tw.com.xxx.dbutils
            - CountDB.java
## GUI程式介面設計
- 避免跑板用以下設定：
![](https://i.imgur.com/GtfWJUg.png)
- 拖移元件功能
    - JLabel
        - 文字方塊
        - 課堂指定欄位
            - 編號
            - 姓名
            - 年紀
            - 信箱
    - JTextField
        - 輸入框
            - 設定Variable
            `input_eName`
            設定錯誤會讓其他功能失效喔！
    - Jbutton
        - 按鈕
        - 點兩下元件會產生程式碼
        - 要對按鈕撰寫的程式碼
        ```java=
        String id=input_eid.getText();
        ...
        總之把有的欄位內容都送入
        System.out.println(id+","+name);//做個列印測試效果
        ```
        正式/送出存入整個按鈕元件應該這樣寫︰
        ```java=
        Employee emp = new Employee();
        emp.setEid(Integer.parseInt(input_eid.getText())); //型態轉換（id在關聯檔案中是被宣告為整數型態）
        emp.seteName(input_eName.getText());
        emp.seteAge(input_eAge.getText());
        emp.seteEmail(input_eEmail.getText());
        
        //這個功能是一個彈出視窗
        JOptionPane.showMessageDialog(null, emp.toString());
        
        //以下功能是把輸入的文字清空
        input_eid.setText("");
        input_eName.setText("");
        input_eAge.setText("");
        input_eEmail.setText("");
        ```
- 對齊工具：第一個選要參照的
- 在整個程式的main method中加入
```java=
frame.setLocationRelativeTo(null); //這是視窗預設居中的功能
frame.setResizable(false);         //這是是否讓使用者改視窗大小的功能
```
- 對整個專案右鍵選Export-Runnable JAR flie
    - 輸出可執行的Java檔案
- 備註：專案有驚嘆號的處理方法很複雜[（可以看看這篇文章）](https://dotblogs.com.tw/newmonkey48/2018/03/16/140815)，可能重新開一個空的Project用複製的方式搬運過去會更簡單一點...
    - 應該通常發生在有資源丟失的情形？例如Path跑掉
## 更多秘訣
- Menu選單要開啟新彈出視窗只要把另一個JFrame main方法中的內容貼到新增的Action中即可
- 當有多個選擇戳記時，若只希望多選一，把它們選起來加入button group中
- 下拉式選單要新增選項加在model的設定中