java - 从其他类调用方法,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++;
}
}
解决方案
推荐阅读
- javascript - 从对象内部的数组中删除除特定项之外的所有项目
- spring-cloud-dataflow - Spring Cloud Data Flow 的非选项参数
- python - 如何使用张量流计算自定义层中张量之间的操作
- sql - SQL - 非重复计数 (SQL Developer)
- sql-server - 首次尝试连接到 SQL Server 失败
- javascript - 如何从 Joi 中已定义的模式对象中访问/提取模式?
- php - 试图在 PHP LARAVEL 中获取非对象的属性
- javascript - 如何在 EJS 文件中预填充日期属性的值?
- javascript - Vue循环csv按值过滤
- stripe-payments - 带多张优惠券的条纹订阅 - 如何购买产品,以免以新的优惠券折扣再次支付现有产品?