我有一个javafx应用程序,它使用二叉树算法生成迷宫。但是,我想将许多方法移到主类之外,然后仅从主类调用它们,以使代码更具可读性。 我尝试使用接口来尝试模拟多重继承来访问方法,但这没有用,因为接口没有主体。然后,我尝试制作其他类的实例,然后调用该方法,但这只是挂了ui,因为新实例创建了一个新对象。 下面是我要移到另一个名为'delNode'的类中的一种方法,该方法通过获取行的开始和结束坐标,然后将其从窗格中删除来工作。从根本上讲,为了简单起见,是否有一种方法可以从另一个类中调用非静态方法而无需创建该类的实例?
public void delNode(int Sx, int Sy, int Ex, int Ey) {
//System.out.println("run me");
ObservableList<Node> nodes = pane.getChildren();
sizeN = nodes.size();
//System.out.println(sizeN);
List<List<Integer>> cells = new ArrayList<>();
int j = 0;
for (int i = 0; i < sizeN; i++) {
//check if size of list is greater than 0 is to esnure no out of bounds error
Node val = nodes.get(i);
List<Integer> preCells = new ArrayList<>();
double valx = (val.getLayoutBounds().getMinX() + 0.5);
double valy = (val.getLayoutBounds().getMinY() + 0.5);
double endx = (val.getLayoutBounds().getMaxX() - 0.5);
double endy = (val.getLayoutBounds().getMaxY() - 0.5);
//System.out.println("cell (" + valx + ',' + valy + ')');
preCells.add((int) valx);
preCells.add((int) valy);
preCells.add((int) endx);
preCells.add((int) endy);
//System.out.println(preCells);
cells.add(preCells);
}
//System.out.println(cells);
boolean done = false;
while (!done) {
if (j > cells.size() - 1) break;
int xF = cells.get(j).get(0);
int yF = cells.get(j).get(1);
int eXf = cells.get(j).get(2);
int eYf = cells.get(j).get(3);
//System.out.println(cells);
if (Sx == xF && Sy == yF && Ex == eXf && Ey == eYf) {
pane.getChildren().remove(j);
//System.out.println(Sx);
//System.out.println("removed");
//break;
done = true;
j = 0;
//System.out.println("DONE DONE DONE DONE DONE DONE DONE DONE DONE DONE DONE DONE DONE DONE DONE DONE DONE DONE DONE DONE DONE DONE DONE DONE DONE DONE DONE DONE DONE DONE DONE DONE DONE DONE DONE DONE DONE ");
}
j++;
}
}