2016-04-03 86 views
-4

我有一个Quick Quesiton,我需要帮助。我的问题是我创建了2个类,我想调用我的Panel类的方法“IsWin”。如何从Java中的另一个类调用方法?

这是方法,我有:

类名称:IsWin

public class IsWin { 

private JButton[][] slots; 
private Color playerColor = Color.red; 

public boolean Winner(int column, int row) { 

     boolean result = false; 

     // horizontal  
     boolean found = false; 
     int counter = 0; 

     for (int i = 0; i < slots.length; i++) {   
      if (slots[i][row].getBackground().equals(playerColor)) { 

      counter++; 

      // win 
      if (found == true) {    
       if (counter == 4) {    
       result = true; 
       break; 
       } 
      } 
      else {    
       found = true; 
      } 
      } 

      // reset counter 
      else {   
      if (found == true) {    
       counter = 0; 
      }   
      found = false; 
      } 
     } 

这就是我要调用的方法

这是我的面板类的类:connectFourPanel

private class clikMeButtonListener implements ActionListener{ 
public void actionPerformed(ActionEvent event) {  

    if (event.getSource() == clickMeOne 
     || event.getSource() == clickMeTwo 
     || event.getSource() == clickMeThree 
     || event.getSource() == clickMeFour 
     || event.getSource() == clickMeFive 
     || event.getSource() == clickMeSix 
     || event.getSource() == clickMeSeven 
    ) { 

    int lastEmptyIdx = -1; 

    for (int i = 0; i < slots[column].length; i++) {   
     if (slots[column][i].getBackground() != Color.white) { 

     break; 
     } 
     else {    
     lastEmptyIdx = i; 
     } 
    } 

    if (lastEmptyIdx != -1) {   
     slots[column][lastEmptyIdx].setBackground(playerColor); 

     if (IsWin.contains(column, lastEmptyIdx)) { 

     String message = playerColor == Color.red ? " Player One Won!" : " Player Two Won!"; 
     JOptionPane.showMessageDialog(null, message, " Results ", JOptionPane.INFORMATION_MESSAGE); 

     System.exit(0);    
     } 

     else {  
     playerColor = playerColor == Color.red ? Color.yellow : Color.red; 

     // assuming that Color.yellow is for computer player 
     if (isHumanVsComputer && playerColor == Color.yellow) {    
      doComputerMove(); 
     } 
     }  
    } 
    } 
} 

注意这不是我完整的代码

UDPATE:这是我在我的面板类..

IsWin myIsWin = new IsWin(); 
myIsWin.Winner(column, row); 
+0

它是一种方法还是一个类? –

+0

方法........ –

回答

1

你可以让你想从另一个调用该方法类static,然后使用<ClassName>.<MethodName>调用它。

例如

public class Foo { 
    public static void foobar() { 
     /* Your Code Here */ 
    } 
} 

现在,可以按如下方式访问使用Foo.foobar();此方法:

public class Panel { 
    public void someMethod() { 
     Foo.foobar(); 
     /* Your Code Here */ 
    } 
} 
+0

Waitt所以...所有的优胜者检查代码进入我创建的新班,但我成立? Corrent?是或否 –

+0

@JainamPatel假设'Winner'是您的方法名称,您必须将其设置为静态,如下所示:'public static boolean Winner(int column,int row)'。现在,您可以使用'Panel'类的方法来执行'IsWin.Winner(...)'。 – user2004685

+0

嘿,我做到了,但有很多错误:这是我做了什么:IsWin.Winner();错误:令牌“Winner”上的语法错误,此令牌之后预期的标识符 –

0

则需要声明类的目的IsWin面板中类,并在那种情况下调用方法Winner()

示例:

IsWin myIsWin = new IsWin.... 

myIsWin.Winner(0, 0); 
+0

我做了你的建议,但给我错误........................................ ...........:在这行“多个标记 \t - 令牌语法错误‘(’删除 \t此令牌 \t - 语法令牌错误‘)’,删除 \t此令牌“ –

+0

更新的代码,这样我就可以看到它正确地请 –

0

您必须创建IsWin对象并访问Winner方法。 例如:

IsWin iw = new IsWin(); 
    if (iw.winner(column, lastEmptyIdx)) { 
     String message = playerColor == Color.red ? " Player One Won!" : " Player Two Won!"; 
     JOptionPane.showMessageDialog(null, message, " Results ", JOptionPane.INFORMATION_MESSAGE); 

     System.exit(0);    
    } 
+0

现在我做什么ü告诉我,但现在,它给我的错误...喜欢我的游戏运行不正常......我作出了连接4个游戏...所以喜欢你会喜欢帮我一起吗???????? / –

相关问题