好吧,我已經瀏覽了整個互聯網,但卻未能找到這個問題的答案,所以也許有人可以提供一些見解.
我正在開發一個相對簡單的Java應用程序,它將取代目前用于系統訪問請求的Word文檔.它旨在允許表單輸入新的員工雇用信息 – 名稱,所需的訪問權限等.
所以這是我的問題.嘗試使用所有文本字段和所有內容制作GUI令人驚訝地痛苦.因為每個小部件有點不同,所以在填寫表單后獲取輸入似乎需要為每個小部件單獨引用,以便我可以單獨調用它們.這意味著一個部分的每個面板有6-10個不同的私有字段. (我嘗試將所有類似的小部件添加到列表中并在循環中調用它們,但這似乎不起作用.)
在某些方面,似乎Web表單更適合這種情況,但我沒有可用的基礎結構.有沒有人找到比這更類似的更好的解決方案呢?它似乎只是一大堆代碼.請參閱下面的一個想法(我提出了一些評論而不是實際的代碼,因為它太長了).謝謝你的期待!
private JComboBox my_dates;
private JTextField my_date1;
private JTextField my_date2;
private JTextField my_request_date;
private JTextField my_new_legal_name;
private JTextField my_new_pref_name;
private JTextField my_new_username;
private JTextField my_prev_legal_name;
private JTextField my_prev_pref_name;
private JTextField my_prev_username;
private JTextField my_emp_id;
private JTextField my_manager;
private JTextField my_auth_requestor;
private JTextField my_auth_phone;
public NameChangePanel(FormSection the_section)
{
super();
initialize();
buildPanel(the_section.getFields());
}
private void initialize()
{
// Create all the widgets individuall
}
private void buildPanel(List the_fields)
{
// add a field label
// add a component
// repeat for all values
}
public List getFormValues()
{
// Call all of the private fields individually
return values;
}
}
解決方法:
Vanilla Swing很冗長 – 沒有爭論.基本上對于這種事情,我最終依賴于一堆本地生成的util / factory方法,比如createTextBox(),它們被參數化以供常用,并將執行必要的3-8語句.
我有時甚至會參數化布局.我傾向于將所有布局減少到GridBagLayout(其他人做BorderLayout等;這只是個人偏好的問題),然后創建方法,將控件放在網格中的特定點.
如果你不是基于網絡的,我會堅持使用Swing.它可能很冗長,但對于一個簡單的形式來說并不是那么困難.
標簽:java,user-interface,swing
來源: https://codeday.me/bug/20190717/1485554.html