2013-08-20 49 views
1

我有一個問題屬於索引。我在一個單獨的類中創建了一個HashMap,以獲取關鍵字的數據庫和關鍵字的座標。Java返回int從Object [] []通過HashMap

public class Reference_Map { 

private static HashMap<String, Object[][]> map; 

public HashMap<String, Object[][]> getMap() { 
    return map; 
} 

public void setMap() { 
    map = new HashMap<String, Object[][]>(); 
    map.put("A1", new Object [0][0]); map.put("A2", new Object [0][1]); 
    map.put("A3", new Object [0][2]); 
    map.put("B1", new Object [1][0]); map.put("B2", new Object [1][1]); map.put("B3", new Object [1][2]); 
    map.put("C1", new Object [2][0]); map.put("C2", new Object [2][1]); map.put("C3", new Object [2][2]); 

它只是地圖的一小段,有很多條目,從A到P和1到24(A1到P24)。我決定這樣做,因爲我想獲得訪問JTable的鍵的座標。我的意圖是使用表的「setValueAt」函數,但似乎需要(Object o,int row,int col)是正確的。 所以我的問題是,我怎麼得到的關鍵座標的方式,我可以用它來設置值的表?或者,如果真的不能這樣做,我怎麼能存儲我的數據庫的方式,我可以使用上述功能?

什麼,我嘗試了一些示例:

Reference_Map rm = new Reference_Map(); 
for (String s: rm.getMap().keySet()) { 
    if (s.equals(ID)) { 
    this.table1.setValueAt(result_short, rm.getMap().get(ID)); 
    } 
} 

ID是一個包含地圖的未知值的字符串。 result_short是應寫入Jtable(私有JTable表1)的字符串。表本身的構造是這樣的:

String[] columnNames = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24"}; 
    this.data = new Object[16][24]; 
    this.table1 = new JTable(this.data, columnNames); 

我希望你能幫助我,感謝您試用

回答

2

在我看來在您選擇存儲在地圖座標的方式,問題出現了。

如果你想存儲的位置(3,4) - 存儲new Object[3][4]它不會幫助你。 當您致電rm.getMap().get(ID)時,您不會收到職位。

要改變這一點,你需要另一個類,讓它叫做Position。你改變你介紹座標地圖的方式:

class Position{ 
int x; 
int y; 
Position(int x, int y) { 
    this.x=x; 
    this.y=y; 
} 
} 
map.put("C2", new Position(2,1)); 

這樣,rm.getMap()獲取(ID)會給你一個位置的對象(位置P)。你可以使用它:

Position p = rm.getMap().get(ID); 
this.table1.setValueAt(result_short, p.getX(), p.getY()); 

以這種方式你會尊重:(對象o,int行,int col)。

我希望我能理解這個問題。

編輯

new Position(2,1)您需要提供一個構造函數創建一個新的實例。我編輯了類定義上部。

+0

感謝您的回答,您瞭解我的問題相當好。你的方式對我來說似乎很有趣。但我還有一些問題:構建我的地圖應該看起來像這樣? - >「private static HashMap map;」和「map.put(」A1「,新位置(0,0));」對我造成了一個錯誤:「構造函數的位置未定義」。我在課堂上將getter和setter添加到x和y位置 – MIP

+0

我編輯了以前的帖子,告訴如何擺脫錯誤。 –

+0

非常感謝,現在可以工作,你肯定救了我:) – MIP