Mac osx 10.6.8でnetbeans 7.3.1を使用しています
問題: 次のファイルをドロップすると:
照片.jpg
picture.jpg
blank space.txt
私は得る
not found %E7%85%A7%89%87.jpg
dropped picture.jpg
not found blank%20space.txt
と期待しながら
dropped 照片.jpg
dropped picture.jpg
dropped blank space.txt
質問: JavaFX に OS と同じ文字エンコーディングを使用するように依頼するにはどうすればよいですか?
別の質問: JavaFX と Mac OS X にデフォルトの文字エンコーディングとして UTF-8 を使用するように指示するにはどうすればよいですか?
回答: Petr の回答を参照してください。質問には回答していませんが、実際の問題を示しています。
コード:
import java.io.File;
import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.input.DragEvent;
import javafx.scene.input.Dragboard;
import javafx.scene.input.TransferMode;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class SimpleDropFile extends Application {
private VBox root = new VBox(10);
@Override
public void start(Stage primaryStage) {
Scene scene = new Scene(root, 300, 250);
scene.setOnDragOver(onDragOver);
scene.setOnDragDropped(onDragDropped);
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
}
EventHandler onDragOver = new EventHandler<DragEvent>() {
@Override
public void handle(DragEvent event) {
Dragboard db = event.getDragboard();
if (db.hasFiles()) {
event.acceptTransferModes(TransferMode.COPY);
} else {
event.consume();
}
}
};
EventHandler onDragDropped = new EventHandler<DragEvent>() {
@Override
public void handle(DragEvent event) {
Dragboard db = event.getDragboard();
boolean success = false;
if (db.hasFiles()) {
success = true;
for (File file:db.getFiles()) {
if(file.exists()){
root.getChildren().add(new Label("dropped " + file.getName()));
} else {
root.getChildren().add(new Label("not found " + file.getName()));
}
}
}
event.setDropCompleted(success);
event.consume();
}
};
public static void main(String[] args) {
launch(args);
}
}
更新: 質問を更新して、次の内容を含めました。
- 適切な質問
- 最低限のサンプルコード。コピー、貼り付け、コンパイル、テストができるようになりました。おそらく、Windowsでは正常に動作します
- 答え