У меня есть метод, который возвращает панель, и на этой панели есть несколько кнопок и индикатор ProgressBar, используемый для отображения хода ожидающей загрузки, позволяя пользователю приостановить, возобновить или отменить его:
Моя проблема в том, что когда я начинаю новую загрузку, я хочу добавить новую панель ниже последней, располагая их вертикально по мере начала новых загрузок.Однако созданная мной логика открывает новую панель в том же положении, что и предыдущая, с наложением ее.
Как мне сделать так, чтобы эти панели складывались?
Что я пробовал
package DownloadManager;
import java.io.File;
import java.util.ArrayList;
import javafx.application.Application;
import javafx.collections.ObservableList;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
import javafx.scene.control.ProgressBar;
import javafx.scene.control.ProgressIndicator;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
public class ProgressClass {
public Pane show( DownloadAction ob,Button pause,Button resume,Button delete,Thread thread)
{
File resumefile = new File("C:\\Users\\kamran ali\\Desktop\\play.png");
File pausefile = new File("C:\\Users\\kamran ali\\Desktop\\pause1.png");
File deletefile = new File("C:\\Users\\kamran ali\\Desktop\\delete1.png");
Image resIcon = new Image(resumefile.toURI().toString());
Image paseIcon = new Image(pausefile.toURI().toString());
Image delIcon = new Image(deletefile.toURI().toString());
ImageView icon0 = new ImageView(resIcon);
ImageView icon1 = new ImageView(paseIcon);
ImageView icon2 = new ImageView(delIcon);
icon0.setFitWidth(10);
icon0.setFitHeight(10);
icon1.setFitWidth(10);
icon1.setFitHeight(10);
icon2.setFitWidth(10);
icon2.setFitHeight(10);
pause = new Button(null,icon1);
resume = new Button(null,icon0);
delete= new Button(null,icon2);
pause.setLayoutX(270);
resume.setLayoutX(300);
delete.setLayoutX(330);
pause.setLayoutY(120);
resume.setLayoutY(120);
delete.setLayoutY(120);
pause.setOnAction(e->{
thread.suspend();
});
resume.setOnAction(e->{
thread.resume();
});
ProgressBar pb = new ProgressBar(0.0);
ProgressIndicator pi = new ProgressIndicator(0.0);
Label label = new Label();
label.setLayoutX(100);
label.setLayoutY(80);
label.setText(ob.getpath());
pi.setLayoutX(510);
pi.setLayoutY(80);
pi.setPrefSize(50, 50);
pb.setLayoutX(100);
pb.setLayoutY(100);
pb.setPrefWidth(400);
pb.setProgress(0);
pb.isIndeterminate();
pb.progressProperty().unbind();
pi.progressProperty().bind(ob.progressProperty());
pb.progressProperty().bind(ob.progressProperty());
Pane pane1 = new Pane();
pane1.setLayoutY(40);
pane1.getChildren().addAll(pb,pi,label,pause,resume,delete);
return pane1;
}
}