一类我定义一个类,它允许发布内部访问私有对象的方法:访问从另一个
public class HexBoard {
[...]
public HexBoard(int Width, int Height, boolean Wrap) {
SetSize(Width, Height); // inherently calls Reset()
SetWrap(Wrap);
} // HexBoard constructor
public Polygon GetHexagon(int CellIndex) {
Polygon p = new Polygon();
for (int i = 0; i < 6; i++) {
p.addPoint((int) (HexCentres.X(CellIndex) + HexPoints.X(i)), (int) (HexCentres.Y(CellIndex) + HexPoints.Y(i)));
}
return p;
} // GetHexagon
public int Cells() { return CellCount; }
} // HexBoard
你可以看到,该方法将创建一个多边形并将其返回。这一点运作良好。现在,我有另一个课程,它发布了一个扩展的JPanel,以绘制一个由六边形组成的基于六边形的游戏场。
import java.awt.*;
import javax.swing.*;
public class PCinterface extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
int CellCount = HexBoard.Cells();
for (int i = 0; i < HexBoard.Cells(); i++) {
g.drawPolygon(HexBoard.GetHexagon(i));
}
} // paintBoard
} // PCinterface
的问题是,PCinterface一无所知HexBoard的,所以它不能访问HexBoard.Cells()或HexBoard.GetHexagon()。
当执行以下
public class Test {
public static void main(String args[]) {
BreadBoard Board = new BreadBoard(12,12,false);
Board.SetCellRadius(25);
JFrame frame = new JFrame();
frame.setTitle("BreadBoard");
frame.setSize(600, 600);
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
Container contentPane = frame.getContentPane();
contentPane.add(new PCinterface());
frame.setVisible(true);
*/
} // main
} // Test
我希望它会打开一个窗口,并得出一些六边形,但我可以看到使用HexBoard在主创建六角板为主的,不存在的PC界面的上下文。
我可以看到达我可以很容易地在主要包含PCInterface,这将解决问题:我试图开发多个平台,并希望这是一个合适的方式来分离平台依赖类。
我该如何在PCInterface类中使用BreadBoard中的数据?
甚至不知道如何编译,Hex Board#Cells()不是静态的,所以你必须在'HexBoard'类的实例上调用它。 – 2013-05-02 21:59:53
进口HexBoard;然后地址@ HunterMcMillen的观察,然后看看你的标识符。 – CPerkins 2013-05-02 22:00:04
您需要注意Java最佳实践。尽量避免以大写字母开头的变量和方法。 – 2013-05-02 22:00:07