JFileChooser上的窗口外观和感觉布局比其他外观好很多,感觉就像灵气.
所以我正在寻找一种方法来获得系统外观和感觉的布局,但在顶部有nimbus或其他主题.
这可能吗?如果是这样,怎么办呢?
我已经在我的命令行程序中实现了jFileChooser,它的工作正常,只有一个烦人的问题.它似乎在每个窗口下方打开,没有任何警报.事实上,我甚至错过了几次,首先让我相信我已经错误地实施了它.
我已经实现了如下:
System.out.println("Please select the file");
JFileChooser fc = new JFileChooser();
int retValue = fc.showOpenDialog(new JPanel());
if(retValue == JFileChooser.APPROVE_OPTION){
g.inputFile = fc.getSelectedFile();
}else {
System.out.println("Next time select a file.");
System.exit(1);
}
Run Code Online (Sandbox Code Playgroud)
基本上我只想要jFileChooser,以便让用户选择一个文件作为输入文件.这是唯一需要GUI实现的组件,因此如果我可以避免编写GUI,那将会很有帮助.
我创建了一个JFileChooser来打开一个文件,但是当我选择一个文件然后打开它时,第二次我要选择一个文件时,JFileChooser不在当前目录中.如何设置JFileChooser打开当前目录?
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES );
fileChooser.setDialogType(JFileChooser.SAVE_DIALOG);
int result = fileChooser.showOpenDialog( this );
if ( result == JFileChooser.APPROVE_OPTION ){
File fileName = fileChooser.getSelectedFile();
File path=fileChooser.getCurrentDirectory();
if ( ( fileName == null ) || ( fileName.getName().equals( "" ) ) )
{
JOptionPane.showMessageDialog( this, "Invalid File Name",
"Invalid File Name", JOptionPane.ERROR_MESSAGE );
}
else{
currentPath=path.getPath()+"\\"+fileName.getName();}
}
Run Code Online (Sandbox Code Playgroud) 我有一个方法从JTextArea获取文本,创建一个文件并在其上写文本如下代码:
public void createTxt() {
TxtFilter txt = new TxtFilter();
JFileChooser fSave = new JFileChooser();
fSave.setFileFilter(txt);
int result = fSave.showSaveDialog(this);
if(result == JFileChooser.APPROVE_OPTION) {
File sFile = fSave.getSelectedFile();
FileFilter selectedFilter = fSave.getFileFilter();
String file_name = sFile.getName();
String file_path = sFile.getParent();
try{
if(!sFile.exists()) {
sFile.createNewFile();
BufferedWriter out = new BufferedWriter(new FileWriter(sFile));
out.write(jTextArea1.getText());
out.close();
JOptionPane.showMessageDialog(null, "Warning file • " + file_name + " • created succesfully in \n" + file_path);
} else {
String message = "File • " + file_name + …Run Code Online (Sandbox Code Playgroud) 大家下午好,
我有一个javax.swing.JFileChooser的实例,我使用addChoosableFileFilter添加了一些可选择的javax.swing.FileFilter.
但是,当我显示对话框(通过showSaveDialog)时,默认情况下不会选择我的自定义可选择FileFilter.
我想默认选择过滤器"Image Files".
我们如何为javax.swing.JFileChooser对话框选择默认过滤器?
SSCCEd:
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new java.lang.Runnable() {
@Override
public void run() {
new javax.swing.JFrame() {
{
final javax.swing.JButton button = new javax.swing.JButton("Save");
button.addMouseListener(new java.awt.event.MouseAdapter() {
@Override
public void mousePressed(java.awt.event.MouseEvent e) {
new javax.swing.JFileChooser() {
{
addChoosableFileFilter(NewFileFilter("Text Files", new String[] { "txt" }));
addChoosableFileFilter(NewFileFilter("Image Files", new String[] { "gif", "png", "jpg" }));
addChoosableFileFilter(NewFileFilter("Audio Files", new String[] { "mp3" }));
addChoosableFileFilter(NewFileFilter("Video Files", …Run Code Online (Sandbox Code Playgroud) 我试图添加一个扩展名由a选择的文件的名称,JFileChooser虽然我无法让它工作.
这是代码:
final JFileChooser fc = new JFileChooser();
fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
int returnVal = fc.showSaveDialog(null);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File f = fc.getSelectedFile();
String name =f.getAbsoluteFile()+".txt";
f.renameTo(new File(name));
FileWriter fstream;
try {
fstream = new FileWriter(f);
BufferedWriter out = new BufferedWriter(fstream);
out.write("test one");
out.close();
} catch (IOException ex) {
Logger.getLogger(AppCore.class.getName()).log(Level.SEVERE, null, ex);
}
}
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚为什么这不起作用.我也尝试使用getPath()和getCanonicalPath(),但结果是一样的.该文件是在所选目录中创建的,但没有".txt"扩展名.
我正在使用JFileChooser来选择文件,我试图限制显示只显示jpg或jpeg文件.我尝试过FileFilter和ChoosableFileFilter,它不限制文件选择.这是我的代码:
JFileChooser chooser = new JFileChooser();
FileFilter filter = new FileNameExtensionFilter("JPEG file", new String[] {"jpg", "jpeg"});
chooser.setFileFilter(filter);
chooser.addChoosableFileFilter(filter);
int returnVal = chooser.showOpenDialog(null);
if(returnVal == JFileChooser.APPROVE_OPTION) {
debug.put("You chose to open this file: " + chooser.getSelectedFile().getAbsolutePath());
File selectedFile = new File(chooser.getSelectedFile().getAbsolutePath());
...
Run Code Online (Sandbox Code Playgroud) 我开发了一个小应用程序,将文件从一个文件夹复制到另一个文件夹.我使用JFileChooser选择目标目录.我很久没有尝试过的东西就是选择我的手机作为目标目录.我试过但我不能从我的JFileChooser中找到它.我读了其他一些问题,我想知道是否有可以让我将文件从我的电脑复制到mtp设备?我的目标是linux和Windows平台.
我的手机是LG Nexus 5 android 6.0.1.谢谢你的时间.如果你想downvote我想知道原因
我们软件的用户需要在我们的Java swing应用程序中浏览Windows 10上的网络共享,但是swing的JFileChooser默认情况下不具备此功能.
在这篇相关文章中 如何在JFileChooser中导航到网络主机? 使用ShellFolder(sun私有API)来设置JFileChooser的当前目录是一个不错的解决方案,我们在过去几年中一直使用这种方法进行一些修改而没有任何问题.
public static File getNetworkShareFolder( final File folder ) throws IllegalArgumentException {
final File file = new NonCanonicalizingFile( folder.getPath() );
if( isNetworkShareFolder( file ) ) { // assume Win32ShellFolderManager2 will be present
try {
// JRE-13272 -PRIVATE API that must eventually be swapped for Java 9 alternative
// Using reflection because Win32ShellFolderManager2 may not exist in rt.jar on Linux build server
final Class win32ShellMgr = Class.forName( "sun.awt.shell.Win32ShellFolderManager2" );
// get static creation method from class, …Run Code Online (Sandbox Code Playgroud) java ×10
jfilechooser ×10
swing ×7
android ×1
awt ×1
command-line ×1
file ×1
filefilter ×1
mtp ×1
nimbus ×1
smb ×1
windows ×1