a.SwingNode クラス: Java Swing コンポーネントを JavaFX ノードにカプセル化し、Java Swing を JavaFX でネストできるようにします。JavaSwing は醜いですが、操作は簡単です JavaFXのテーブルコンポーネント(TableViewなど)は少し複雑なので、ネストされたJavaSwingを選択して使用します 見苦しいだけです
b.javacsv-2.0.jar: csvの読み込みに使用します2008年以降更新されなくなりましたが、csvファイルの操作であれば十分です。
c.FileChoose クラス: ローカルリソースマネージャーを開くことができる JavaFX 用のファイルセレクター UI が美しいかどうかはシステムのバージョンに依存します。
d.CsvReader クラス: javacsv-2.0.jar パッケージ内のツールクラス。主に csv ファイルの操作に使用されます。
e.JTable クラス: csv ファイルを作成するための JTable インスタンスを作成します 開いた後表示ではパラメータの順序に注意する必要があります。テーブルの内容は 2 次元配列であり、ヘッダーは 1 次元配列
JTable table = new JTable(表格内容,表头);
f です。1 桁の配列を1 次元配列:
String[][] arr = new String[10][];//开辟一个10行的二维数组 String[] row1 = {"id","name","sex","age"}; arr[0] = row1;//存进二维数组
g. JTable はヘッダーを表示しません: JTable オブジェクトをペインに配置する必要があります
JTable table = new JTable(表内容,表头); JScrollPane jScrollPane = new JScrollPane(table); SwingNode swingNode = new SwingNode(); swingNode.setContent(jScrollPane);//使用swingNode封装swing组件,就可以在Javafx中用了
#String[] getHeaders() CSV ファイルのヘッダーを取得します (非常に奇妙ですが、取得する前に readHeaders() メソッドを呼び出す必要があります。そうしないと、null ポインター例外が報告されます)
以上です:
CsvReader reader = new CsvReader("xxx.csv"); reader.readHeaders(); //没有这句话,执行下面会报错 String[] head = reader.getHeaders();
boolean readRecord() は CSV コンテンツの行を読み取ります。呼び出している限り、次回呼び出したときにそれが読み込まれます。 csv の次の行に切り替わります。通常は while ループを使用して、すべてのコンテンツを 1 行ずつ時間内に操作します
String getRawRecord() データの行を読み取ります
while (reader.readRecord()){ System.out.println(reader.getRawRecord());//输出一行内容 }
例 - ローカル デスクトップ上の CSV ファイルを読み取る
@Override public void start(Stage primaryStage) throws Exception { primaryStage.setTitle("文件选择器"); primaryStage.setHeight(600); primaryStage.setWidth(800); final FileChooser fileChooser = new FileChooser(); //设置打开资源管理器后的文件过滤 fileChooser.getExtensionFilters().addAll( new FileChooser.ExtensionFilter("All Images","*.*"), new FileChooser.ExtensionFilter("PNG","*.png"), new FileChooser.ExtensionFilter("MP4","*.mp4"), new FileChooser.ExtensionFilter("CSV","*.csv") ); final Button open = new Button("打开文件"); final GridPane inputGridPane = new GridPane();//创建格子布局面板 GridPane.setConstraints(open,0,0);//第0行0列 inputGridPane.setHgap(6.0);//设置水平间距 inputGridPane.setVgap(6.0);//设置垂直间距 inputGridPane.getChildren().addAll(open);//添加按钮 final Pane rootGroup = new VBox(12);//创建一个垂直盒子布局器 rootGroup.getChildren().addAll(inputGridPane);//把格子面板放进来 rootGroup.setPadding(new Insets(12,12,12,12)); primaryStage.setScene(new Scene(rootGroup)); primaryStage.show(); //设置点击-打开文件-的动作事件 open.setOnAction(event -> { File file = fileChooser.showOpenDialog(primaryStage);//在当前窗口打开文件选择器 if (file != null){ try { FileInputStream inputStream = new FileInputStream(file); BufferedInputStream stream = new BufferedInputStream(inputStream); String fileName = file.getName(); String filePath = file.getAbsolutePath(); System.out.println("文件路径 = "+filePath); try { CSVDemo.read(filePath); } catch (IOException e) { e.printStackTrace(); } //封装JTable,使得JTable和Javafx嵌套在一起 SwingNode swingNode = new SwingNode(); try { JTable table = read(filePath); JScrollPane jScrollPane = new JScrollPane(table); swingNode.setContent(jScrollPane); } catch (IOException e) { e.printStackTrace(); } //设置JTable打开后表格的相对位置 GridPane.setConstraints(swingNode,0,1); inputGridPane.getChildren().add(swingNode); } catch (FileNotFoundException e) { e.printStackTrace(); } } }); } //读取csv文件并把它读取到JTable中返回 public static JTable read(String filePath) throws IOException { CsvReader reader = new CsvReader(filePath); reader.readHeaders();//跳过表头 String[] head = reader.getHeaders(); List<String []> list = new ArrayList<>(); String s = reader.getRawRecord(); System.out.println("表头 "+s); String[] r1 = dataToArray(s); // list.add(r1); while (reader.readRecord()) { System.out.println(reader.getRawRecord()); list.add(dataToArray(reader.getRawRecord())); } String[][] data = new String[list.size()][]; System.out.println("一共"+list.size()+"行数据"); for (int i = 0; i < data.length; i++) { data[i] = list.get(i); } JTable table = new JTable(data,head); return table; } //将每一行的数据从String转为String数组 public static String[] dataToArray(String row){ String[] res = row.split(","); return res; }
以上がJava を使用して CSV ファイルを JTable にインポートして表示する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。