Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

JFileChooserに表示されるアイコンが表示されたボタン類のサイズ変更は可能でしょうか?

13インチ、フルHDディスプレイのノートPC上でJFileChooserを表示すると小さすぎて文字が視認出来なかったので、ネット検索で調べてJFileChooserのサイズとフォントサイズの変更をすることで視認性を向上させることが出来ました。
しかしながらJFileChooser上の右上に表示されているアイコンが表示されているボタン類「1レベル上へ」「Desktop」「新規フォルダの作成」「リスト」「詳細」の計5個をサイズ変更することが出来ていない状態です。
どうか教えて下さい。よろしくお願いします。

//ダイアログのサイズ変更
filechooser.setPreferredSize(new Dimension(800,600));

private void setFileChooserFont(Component[] comp){  
      for(int x = 0; x < comp.length; x++)  {  
        if(comp[x] instanceof Container) setFileChooserFont(((Container)comp[x]).getComponents());  
        try{
            comp[x].setFont(font);
        }catch(Exception e){
            
        }
      }
    }

6

回答

91571

閲覧

6件の回答

評価

0

コードが不足していましたので訂正します。
正しくは以下になります。

//ダイアログのサイズ変更
filechooser.setPreferredSize(new Dimension(800,600));
//ダイアログのフォントサイズ指定
setFileChooserFont(filechooser.getComponents());

評価

0

試してみた。

以下デフォルトLook&Feel。
○左の3つはImageIconつきのJButton。フォントの変更同様、JButtonを拾ってJButton#getIcon()⇒ImageIcon#getImage()。ImageIcon#setImage(Image#setScaledInstance())で大きくできた。
○右の2つはJToggleButtonだが、アイコンはMetalIconFactory.FileChooserListViewIcon、MetalIconFactory.FileChooserDetailViewIconというベタ書きIcon(#paintIcon()でGraphics#drawLine()しまくってる。サイズも「18」固定)のシングルトンだった。これをどうこうするよりは、自分でアイコンを用意する方が楽だと思う。

以下WindowsのLook&Feel。
○ボタンは3つともJToggleButtonで、それぞれImageIconなので上と同じ方法で大きくできた。AbstractButtonで取ればJButtonもJToggleButtonも拾える。

評価

0

回答ありがとうございます。
しかしながら当方は現在独学でJAVAを学習中なのですが、回答文中にある「JButtonを拾って」が具体的にどうしたら良いのかわかりません。
回答をいただいた後に「JButtonを拾う」等をネット検索で調べてみたのですが同様の表現が見当たらずどうにも検討がつきません。
大変申し訳ありませんが具体的に教えていただけないでしょうか?
どうかよろしくお願いします。

評価

0

そのまま使える回答を望んでいるなら、そうするつもりはない。
#setFileChooserFont()は、内容を理解した上で書いているのだろうか?
「JButtonを拾って」はその中の処理のひとつと、本質的に同じことだ。
つまり、それ(とくに難しいことはしていない)が理解できれば、同様にJButtonだけの特別な処理を組み込めることになる。

評価

0

回答ありがとうございます。
その後も引き続きネット検索等で調べていて気になったことがあるんですが、回答をいただいた中で下記文中に「Image#setScaledInstance()」とありますが、「setScaledInstance()」ではなく「getScaledInstance()」ではないのでしょうか?
どうか教えて下さい。よろしくお願いします。

> JButton#getIcon()⇒ImageIcon#getImage()。ImageIcon#setImage(Image#setScaledInstance())で大きくできた。

評価

0

失礼、そこはそのとおり。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。