ファイルのデフォルトシステムアイコンを表示する方法JFileChooser
? JFileChooser
のファイルのアイコンは、デスクトップとエクスプローラに表示されるアイコンと同じにする必要がありますか?JFileChooserでファイルのデフォルトのシステムアイコンを表示する方法は?
たとえば、NetBeansアイコンはデスクトップに表示されているようにJFileChooser
に表示されません。
これを行う方法?
ファイルのデフォルトシステムアイコンを表示する方法JFileChooser
? JFileChooser
のファイルのアイコンは、デスクトップとエクスプローラに表示されるアイコンと同じにする必要がありますか?JFileChooserでファイルのデフォルトのシステムアイコンを表示する方法は?
たとえば、NetBeansアイコンはデスクトップに表示されているようにJFileChooser
に表示されません。
これを行う方法?
我々はFileSystemView
クラスを使用して、それでgetFileSystemView()
静的メソッドを呼び出すことによって、それのオブジェクトを取得し、その後File
オブジェクトを取り、それのアイコンを返すgetSystemIcon()
方法を使用することができます。
FileSystemView
およびFileView
クラスは、javax.swing.filechooser
パッケージに存在します。 File
クラスはjava.io
パッケージに含まれています。
注:FileSystemView
は、FileView
を拡張しません。したがって、あなたは、現在のフレームを表しjf.setFileView()
JFileChooser jf=new JFileChooser();
jf.setFileView(new MyFileView());
jf.showOpenDialog(this);
class MyFileView extends FileView
{
public Icon getIcon(File f)
{
FileSystemView view=FileSystemView.getFileSystemView();
return view.getSystemIcon(f);
}
}
this
でFileSystemView
オブジェクトを使用することはできません。このコードが書き込まれたクラスは、@JavaTechnicalで示す
jf.setFileView(new FileView(){
public Icon getIcon(File f)
{
return FileSystemView.getFileSystemView().getSystemIcon(f);
}
});
コミュニティとの共有+1: –
ありがとう@Baadshah :) – user12458
方法は、一方向JFrame
または単純な方法でのサブクラスであると仮定する。ここに別の(より簡単な)方法があります。 GUI(または少なくともファイルチューザ)をネイティブPLAFに設定します。例えば。もちろん
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
public class FileChooserIcons {
public static void main(String[] args) {
Runnable r = new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
} catch(Exception e) {
e.printStackTrace();
}
// the GUI as seen by the user (without frame)
JPanel gui = new JPanel(new BorderLayout());
gui.setBorder(new EmptyBorder(20, 30, 20, 30));
JButton browse = new JButton("Show File Chooser");
final JFrame f = new JFrame("File Chooser");
ActionListener showChooser = new ActionListener() {
JFileChooser jfc = new JFileChooser();
@Override
public void actionPerformed(ActionEvent e) {
jfc.showOpenDialog(f);
}
};
browse.addActionListener(showChooser);
gui.add(browse);
f.add(gui);
// Ensures JVM closes after frame(s) closed and
// all non-daemon threads are finished
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
// See http://stackoverflow.com/a/7143398/418556 for demo.
f.setLocationByPlatform(true);
// ensures the frame is the minimum size it needs to be
// in order display the components within it
f.pack();
// should be done last, to avoid flickering, moving,
// resizing artifacts.
f.setVisible(true);
}
};
// Swing GUIs should be created and updated on the EDT
// http://docs.oracle.com/javase/tutorial/uiswing/concurrency/initial.html
SwingUtilities.invokeLater(r);
}
}
あなたは勇敢な感じている場合、あなたはFile Browser GUIのようなもので始まるカスタムファイルチューを作成することがあります。
[受け入れる]にしてください(http://meta.stackexchange.com/a/65088/155831)、それは問題を解決する助けた場合の答え。 [以前の質問](http://stackoverflow.com/users/2534090/javatechnical?tab=questions)の多くで同じことが言えるかもしれません。もちろん、答えのないページにあることに気づいたら、それを削除する(または削除のためにフラグを立てる)という選択肢が常にあります。 –