首页 > 解决方案 > 从其他类调用方法,javafx 应用程序

问题描述

我有一个 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++;


    }


}

标签: javaclassinheritancejavafxinterface

解决方案


推荐阅读