2012-06-10 1 views
2

Я сделал кнопку, но теперь я не могу открыть ее, например, %appdata%, когда нажимается кнопка.Как создать кнопку, при нажатии которой открывается папка% appdata%?

Вот код ->

//---- button4 ---- 
     button4.setText("Texture Packs"); 
     button4.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) 
      { 
       JFileChooser fileChooser=new JFileChooser("%appdata%"); 
       int status = fileChooser.showOpenDialog(this); 
       fileChooser.setMultiSelectionEnabled(false); 

       if(status == JFileChooser.APPROVE_OPTION) { 
        File file = fileChooser.getSelectedFile(); 
        // do something on the selected file. 
       } 


      } 

И я хочу сделать что-то вроде этого ->

private void button4MouseClicked(MouseEvent e) throws IOException { 

      open folder %appdata% 
      // Open the folder in the file explorer not in Java. 
      // When I click on the button, the folder is viewed with the file explorer on the screen 
     } 
+0

Вы хотите открыть селектор файлов или проводник системных файлов? – Vulcan

+0

Я хочу открыть в системном файле explorer – Malasuerte94

+0

Я написал [FileExplorer class] (http://textu.be/6) для этой цели около месяца назад. Я также опубликовал более подробный ответ. – Vulcan

ответ

3
import java.awt.Desktop; 
import java.io.File; 

public class OpenAppData { 

    public static void main(String[] args) throws Exception { 
     // Horribly platform specific. 
     String appData = System.getenv("APPDATA"); 
     File appDataDir = new File(appData); 
     // Get a sub-directory named 'texture' 
     File textureDir = new File(appDataDir, "texture"); 
     Desktop.getDesktop().open(textureDir); 
    } 
} 
+0

wow tnx :) и .... если мой путь% appdata%/texture? – Malasuerte94

+0

+ «\\ текстура» я нашел :) – Malasuerte94

+0

Я предпочитаю использовать второй конструктор «Файл», показанный в редактировании, хотя это имеет мало значения, если это предназначено только для Windows. В противном случае, либо найдите переменную окружения для этой платформы, либо предложите выбор файла. –

1

Выполнить команду, используя Runtime.exec (..). Однако не у каждой ОС есть один и тот же файловый проводник, поэтому вам нужно обращаться с ОС.

Окна: Explorer /select, file

Mac: open -R file

Linux: xdg-open file

Я написал класс FileExplorer с целью выявления файлов в родном проводнике файлов, но вы должны изменить его для обнаружения операционной системы. http://textu.be/6

ПРИМЕЧАНИЕ: Это если вы хотите раскрыть отдельные файлы. Чтобы показать каталоги, Desktop#open(File) намного проще, как сообщил Эндрю Томпсон.

+0

Ваш код из http://textu.be/6 больше не доступен. Рассмотрите возможность перепрограммировать его на другом хосте или включить его в свой ответ (или просто удалите информацию об этом из своего ответа). – Pshemo

0

Если вы используете Windows Vista и выше, System.getenv("APPDATA"); возвратит вас C:\Users\(username}\AppData\Roaming, так что вы должны пойти один раз, и использовать этот путь для filechooser, Просто простой модифицированный пример Эндрю,

String appData = System.getenv("APPDATA"); 
    File appDataDir = new File(appData); // TODO: this path should be changed! 
    JFileChooser fileChooser = new JFileChooser(appData); 
    fileChooser.showOpenDialog(new JFrame()); 

Подробнее около windows xp и windows vista/7/8

Смежные вопросы