gpt4 book ai didi

java - ListView 和文件选择器

转载 作者:行者123 更新时间:2023-12-02 13:09:08 25 4
gpt4 key购买 nike

我在 ListView 接受内容时遇到问题。这是代码,所以如果有人可以给我建议:

  public void button1Action(){
Main main=new Main();
FileChooser fc=new FileChooser();
fc.setInitialDirectory(new File("C:\\Users"));
List<File>selectedFiles=fc.showOpenMultipleDialog(null);
if(selectedFiles!=null){
for(int i=0;i<selectedFiles.size();i++){
main.lview.getItems().add(selectedFiles.get(i).getAbsolutePath());
}
}else{
System.out.println("File is not Valid");
}
}

我完成选择文件后,路径不会显示在 ListView 上。

编辑:即使我手动通过代码添加一些字符串,它也不会显示任何内容这是我的主要类(class):

public class Main extends Application {
BorderPane root=new BorderPane();
ListView<String> lview=new ListView<String>();

Button btn_load = new Button("Load");
Button btn_play = new Button("Play");
Button btn_stop = new Button("Stop");
Button btn_next = new Button("Next");
Button btn_previous = new Button("Previous");
Button btn_rewind = new Button("Rewind");
TextField tf_pesma=new TextField();
Slider slider=new Slider();
HBox hbox=new HBox();
HBox hbox1=new HBox();

@Override
public void start(Stage primaryStage) {
Logic logic=new Logic();
slider.setValue(50);
slider.setMin(0);
slider.setMax(100);
slider.setMaxWidth(100);
lview.setDisable(false);
lview.setVisible(true);
lview.setPrefWidth(800);

btn_load.setOnAction(e->{
logic.button1Action();
});
lview.setOnMouseClicked(new EventHandler<MouseEvent>(){
@Override
public void handle(MouseEvent event){

}
});


VBox floor = new VBox();
floor.setPadding(new Insets(10,10,10,10));
floor.setSpacing(10);
floor.getChildren().addAll(addInHBox(),addInHBox1());
VBox right=new VBox();
right.setPadding(new Insets(10,10,10,10));
right.setSpacing(10);
HBox button=new HBox();
button.setAlignment(Pos.CENTER);
button.getChildren().add(btn_load);
right.getChildren().addAll(lview,button);
root.setBottom(floor);
root.setRight(right);
Scene scene = new Scene(root, 900, 580);

primaryStage.setTitle("Music Player");
primaryStage.setScene(scene);
primaryStage.show();
}

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
public HBox addInHBox(){
hbox.setPadding(new Insets(10,10,10,10));
hbox.setSpacing(10);
hbox.getChildren().addAll(btn_play,btn_stop,btn_next,btn_previous,btn_rewind);
return hbox;
}
public HBox addInHBox1(){
hbox1.setPadding(new Insets(10,10,10,10));
hbox1.setSpacing(10);
tf_pesma.setPrefWidth(700);
hbox1.getChildren().addAll(tf_pesma,slider);
return hbox1;
}
}

最佳答案

您正在 Logic 类中创建新的 Main 实例。屏幕上显示的 ListView 不属于您创建的新 Main 实例。

要解决此问题,请访问已存在的 Main 的 lview

// Add this in Main class
private void button1Action() {
FileChooser fc = new FileChooser();
fc.setInitialDirectory(new File("C:\\Users"));
List<File> selectedFiles = fc.showOpenMultipleDialog(null);
if (selectedFiles != null) {
for (int i = 0; i < selectedFiles.size(); i++) {
lview.getItems().add(selectedFiles.get(i).getAbsolutePath());
}
} else {
System.out.println("File is not Valid");
}
}

并更改处理程序。

btn_load.setOnAction(e->{
button1Action();
});

关于java - ListView 和文件选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44019540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com