我正在爲學生註冊寫一個GUI Java程序,它將從數據庫中檢索可用的類,給用戶選擇類然後將其存儲在數據庫中的選項。在Java Swing中的複選框的動態Arraylist
我試圖做的,迄今已取得了部分成功,是這樣的 - 我創建了一個組合框與現有的專業(得到了來自DB),檢索到的可用類爲主要和顯示覆選框這些類。
此代碼有兩個問題。
- 從組合框中選擇專業後,複選框不顯示。只有當我懸停我的光標時,它們纔會一個接一個地出現。
- 一旦我在組合框中更改主菜單,即使eclipse中的控制檯顯示新創建的主選項的複選框已經創建,複選框也不會更新。
ArrayList<JCheckBox> checkBoxes=new ArrayList<JCheckBox>();
//combox action listener below
public void actionPerformed(ActionEvent e)
{
//get all available classes for the selected major
avail_class = new String[count_class];
//get all available class ids
avail_classid = new String[count_class];
JCheckBox checkbox;
int xdim = 75;
for (int i = 0; i < count_class; i++)
{
checkbox = new JCheckBox(avail_classid[i] + "-" + avail_class[i]);
checkbox.setBackground(new Color(0, 255, 255));
checkbox.setBounds(183, xdim, 289, 23);
contentPane.add(checkbox);
checkBoxes.add(checkbox);
checkbox.setEnabled(true);
xdim = xdim + 50;
}
}
編輯
對於我的第二個問題,我稱之爲重繪()和它的工作。對於第一個,我做了以下內容:
if(flag < 0)
//flag will be raised whenever there is a change in the selected major. For ex, from web dev to data analytics
for(int i = 0; i < checkBoxes.size(); i++)
{
checkBoxes.get(i).setVisible(false);
System.out.println("old Checkboxes invisible!" + i);
}
你在做什麼使無效框架或面板的新複選框?你需要告訴容器佈置和顯示孩子,每當你改變他們。 – sprinter
'checkbox.setBounds(183,xdim,289,23);'1)Java GUI必須在不同的語言環境中使用不同的PLAF來使用不同的OS',屏幕大小,屏幕分辨率等。因此,它們不利於像素的完美佈局。請使用佈局管理器或[它們的組合](http://stackoverflow.com/a/5630271/418556)以及[white space]的佈局填充和邊框(http://stackoverflow.com/a/17874718/ 418556)。 2)爲了更快地獲得更好的幫助,請發佈[MCVE]或[簡短,獨立,正確的示例](http://www.sscce.org/)。 –