1

我有一个属于索引的问题。我在一个单独的类中创建了一个 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 是一个包含 Map 的未知键的字符串。result_short 是一个应该写入 Jtable(私有 JTable table1)的字符串。表本身是这样构造的:

    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);

我希望你能帮助我,谢谢你的尝试

4

1 回答 1

2

在我看来,问题出在您选择将坐标存储在地图中的方式上。

如果你想存储位置 (3,4) - 存储new Object[3][4]它对你没有帮助。当您打电话时,rm.getMap().get(ID)您不会收到职位。

要改变这一点,你需要另一个类,我们称之为位置。您更改将坐标引入地图的方式:

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().get(ID) 会给你一个 Position 对象(Position p)。您将能够向前使用它:

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

这样你会尊重:(对象o,int row,int col)。

我希望我理解这个问题。

编辑

要创建一个新实例new Position(2,1),您需要提供一个构造函数。我在上面编辑了类定义。

于 2013-08-20T10:37:26.270 回答