2013-11-18 4 views
0

Это метод, который пытается вызвать.Не найдено подходящего метода

public void update(int status) { 
     if (status == 1) 
     { 
      setBorder(new LineBorder(Color.YELLOW, BORDERSIZE+1)); 
     } 
     else if (status == 2) 
     { 
      setBorder(new LineBorder(Color.CYAN, BORDERSIZE+1)); 
     } 
     else if (status == 3) 
     { 
      setBorder(new LineBorder(Color.BLACK, BORDERSIZE)); 
     } 

     revalidate(); 
    } 

Это код, который пытается его использовать.

private void handleMouseClick(int x, int y, int button) { 
    try { 
     // This is called by the board squares when they are clicked 
     // Handle the logic of updates to the client/game here 

     if(button == 1){ 
      if(x != -1 && y != -1){ 
       update(1); 
       x = -1; 
       y = -1; 
       updateGrids(); 
       } 
      else{ 
       update(3); 
      } 
     } 
     else if(button == 3){ 

     } 


    } 
    catch (IOException ex) { 
     System.err.println(ex); 
    } 

Метод обновления внутри класса под названием GridLayout, я попытался просто использовать GridLayout.update (aninteger); но это не сработало для меня.

+0

GridLayout.update (aninteger); будет работать только в том случае, если метод обновления является статическим. Или вы имеете в виду новый GridLayout.update (aninteger)? – Deniz

+0

Что я делаю, у меня много панелей, и когда один щелкнул, я запускаю событие мыши, чтобы сообщить мне, где метод обновления просто изменяет цвет границы панели, на которую была нажата кнопка. – Corjava

+0

'Метод обновления находится внутри класса GridLayout': затем создайте экземпляр класса и вызовите обновление в этом экземпляре. единственный раз, когда вы можете вызвать функцию без ссылки, если вы вызываете ее из собственного контекста класса. – Sage

ответ

1

Для вызова функции обновления требуется экземпляр объекта GridLayout.

С учетом того, что GridLayout связан с вашим существующим кодом, я не могу советовать дальше. Однако если GridLayout временный объект, который вы могли бы попробовать:

GridLayout worker = new GridLayout(... whatever ...); 
worker.update(aninteger); 

В противном случае, вам может понадобиться, чтобы получить его из рамок вовлеченного, или что-то вдоль этих линий:

this.getGridLayout().update(aninteger); 
+0

Стоит отметить, что это должен быть экземпляр * right *; просто создание экземпляра и вызов метода на нем сделает компилятор счастливым, но, скорее всего, не будет иметь желаемого эффекта. Я думаю, что вопросник хочет изменить * существующий * экземпляр. – Holger

+0

Достаточно достаточно, но не так много информации. Главное, что нужен экземпляр GridLayout. –

+0

Правильно. Вы не можете сказать больше, чем ваш текущий ответ. – Holger

Смежные вопросы