2014-11-16 3 views
0

첫 번째 글은 여기에 있지만 오랫동안 독자들이 검색해 왔지만 내 문제를 정확히 해결하는 게시물을 찾을 수 없습니다.JLabels의 2D 배열 위치를 얻으십시오.

mouslisteners를 사용하여 JLabels의 2D 그리드를 만들고 클릭 한 JLabel의 X/Y 위치를 검색하려고하지만 시도 할 방법을 찾을 수 없습니다. 나는이 사이트에서 발견 한 몇 가지 방법을 시도했지만 아무 것도 작동하지 않는다.

현재 나는 다음과 같은 ....

 pcenter.setLayout(new GridLayout(game.getXSize(), game.getYSize())); 
    pcenter.setBorder(new EmptyBorder(8,8,8,8)); 
    pcenter.setPreferredSize(new Dimension((game.getXSize() * 30), (game.getYSize() * 30))); 
    gamegrid = new JLabel[game.getXSize()][game.getYSize()]; 
    for (int i = 0; i < game.getXSize(); i++) { 
     for (int j = 0; j < game.getYSize(); j++) { 
      gamegrid[i][j] = new JLabel(); 
      gamegrid[i][j].setBorder(BorderFactory.createLineBorder(Color.BLACK, 2)); 
      gamegrid[i][j].addMouseListener(new MouseAdapter() { 
       public void mousePressed(MouseEvent e) { 
       } 
      }); 
      pcenter.add(gamegrid[i][j]); 
     } 
    } 

'게임은'내가 클릭 한 JLabel의 동일한 좌표를 전달하고자하는 객체의 2 차원 배열을 수용하는 객체입니다 있습니다. GameGrid [2] [5]를 클릭하는 E.G는 game.plots [2] [5]에 연락 할 것입니다.

내가 2와 5를 저장하기 위해 변수를 만들 때마다 FINAL 메서드를 만들고 싶습니다. 그리고 MouseAdapter() 내부에 메서드를 넣으면 'i'또는 'j'FINAL을 만들고 싶습니다.

도움주세요 :) 미리 감사드립니다.

답변

0

그냥 알아 냈어! 다른 사람들이 알고 싶어하는 곳에 게시 해 드리겠습니다.

는 I 클래스 3 개 다른 변수 생성 : 다음은 지금 현재의 MouseListener를

private static Object source; 
private static int currentX, currentY; 

를 I 첨가 다음

 for (int i = 0; i < game.getXSize(); i++) { 
     for (int j = 0; j < game.getYSize(); j++) { 

      gamegrid[i][j] = new JLabel(); 
      gamegrid[i][j].setBorder(BorderFactory.createLineBorder(Color.BLACK, 2)); 
      gamegrid[i][j].addMouseListener(new MouseAdapter() { 
       public void mousePressed(MouseEvent e) { 

        source = e.getSource(); //added this to get the mouseevent object. 
        XYsource(); // this is a method to turn the object source 
            into X and Y coords. 

       } 
      }); 
      pcenter.add(gamegrid[i][j]); 
     } 
    } 

최종적으로 이하의 방법하여 회전하도록 객체 소스를 X 및 Y 좌표로 변환

public static void XYsource() { 

    int maxX = game.getXSize(); 
    int maxY = game.getYSize(); 

    for(int i = 0; i < maxX; i++) { 
     for(int j = 0; j < maxY; j++){ 
      if (gamegrid[i][j] == source) { 
       currentX = i; 
       currentY = j; 
      } 
     } 
    } 

    updateXY(); // this is just a method to set text on the screen showing 
        the X and Y coordinates to test the MouseListener 
} 
관련 문제