2011-05-03 23 views
1

我正在創建此應用程序,以便通過發送所選單元來通信servlet,如果單元主服務器中有任何更改以映射的形式使用空值發送這些單元。從桌面上我需要從服務器獲取數據只有選定的單位。最初,服務器將所有單元和相關數據發送到桌面應用程序,再次在桌面上選擇後,我們需要連接到服務器以獲取數據。爲此,我需要使用地圖中的名稱顯示覆選框。在java swing應用程序中創建複選框

如何使用Map鍵作爲名稱在java swing應用程序中創建複選框。從服務器

Map<String, String> m1 = new HashMap<String, String>();  
    m1.put("091","091"); 
    m1.put("061","061"); 
    m1.put("001","001"); 
    m1.put("032","031"); 

在桌面應用程序選擇後假設 最初應該是

Map<String, String> m1 = new HashMap<String, String>();  
     m1.put("091","091"); 
     m1.put("061",null); 
     m1.put("001",null); 
     m1.put("032","031"); 

使用解析度。以鍵和值對地圖我想創建複選框,其中鍵是複選框的名稱,值是選擇該複選框。如果key包含一個值(非空),那麼在創建該複選框時應該選擇它。地圖將被動態地改變,創建複選框應該被添加到JDialog中。在選擇結束時,我需要構建地圖,並且我想將其發送到服務器。請幫助我。

回答

1

我總是從教程Check Boxes的示例開始。如果這不是你的意思,可以編輯你的問題?

+0

有沒有什麼辦法的形式傳輸數據[ 「091」, 「ABCD」, 「091」] [ 「061」, 「einc」,空] ...在這裏先爲字符串值,第二個用於顯示名稱,第三個用於選擇/未選擇。我是否需要對象來表示這種數據並將其與ArrayList一起傳輸。 class A {string code,string name,string status} .. arraylist.add(new A()) – 2011-05-04 13:59:21

+0

您可以使用'String.split()'將其分解。很多人在這裏使用['JTable'](http://download.oracle.com/javase/tutorial/uiswing/components/table.html),並保持數據是'TableModel'。 '布爾'列自動呈現一個複選框。 – 2011-05-04 21:11:52

1

創建一個數組JCheckBoxs,數組的大小應該是m1的大小。 Iterate超過m1,並相應地初始化JCheckBoxes,例如,如果條目是當前條目(在你的迭代),cbArr是複選框陣列和i中的循環的開始之前被初始化爲0:

cbArr[i] = new JCheckBox(entry.getKey()); 
if (entry.getValue() != null) 
{ 
    cbArr[i].setSelected(true); 
} 
else 
{ 
    cbArr[i].setSelected(false); 
} 
yourPanel.add(cbArr[i++]); 

這是基本的,創建更新後的HashMap(發送到服務器)遍歷CheckBox數組並將鍵作爲複選框的當前名稱插入,值取決於是否選中該複選框。

Hash<String,String> m2 = new HashMap<String,String>(); 
for (int i = 0; i < cbArr.length; i++) 
{ 
    m2.put(cbArr[i].getText(), cbArr[i].isSelected() ? cbArr[i].getText() : null); 
} 
相關問題