• ベストアンサー

JComboBoxのサイズ変更

(1)JComboBoxをツールバーを作りそこに追加してるんですがJComboBoxのサイズを変更することってできないんでしょうか?? 今のままだと画面のサイズと一緒に 幅が最大まで表示されてしまうんです。 (2)フォントの種類とサイズを別々変更したいんですが Font("",Font.PLAIN,15); を使うとFont.PLAINというフォントの種類と 15というフォントのサイズまで変更されてしまいます。 別々にフォントの種類だけ変更できるメソッドや フォントのサイズだけ変更できるメソッドって ないんでしょうか?? 色々探したんですが見つかりません(泣 どなたかお願いします!!

質問者が選んだベストアンサー

  • ベストアンサー
noname#49664
noname#49664
回答No.3

>取り出した値を再利用 ってどういうことなんでしょうか?? 例えば、それまで設定していたFontインスタンスfontがあったとすると、 String n = font.getName(); Style s = font.getStyle(); Font font2 = new Font(n,s,24); こんな具合にすれば、フォントとスタイルが同じでサイズだけが24ポイントに変更されたFontが得られます。

その他の回答 (3)

  • sasadora
  • ベストアンサー率68% (59/86)
回答No.4

フォントの種類はわからないのですが、 サイズとスタイルだけを変えるのであれば、 Font#deriveFont(float size) Font#deriveFont(int style) が使えると思います。 どちらにしても新しくFontインスタンスを生成するので、再びsetFontする必要があります。 //サイズやフォント種類はそのままに、スタイルだけボールドにする components.setFont(component.getFont().deriveFont(Font.BOLD));

nilyannko
質問者

お礼

sasadoraさん、Kyon2_PaPaさんありがとうございます やっと理解できました!!!  うっうれしいです(嬉泣

  • sasadora
  • ベストアンサー率68% (59/86)
回答No.2

(1)ツールバーの上にJPanelを置いて、その上にJComboBoxを置けばよいです。JPanelのレイアウトマネージャはなんでもいいですが、FlowLayoutあたりがよいかと思います。 (2)No.1の方のおっしゃるとおりだと思います。

nilyannko
質問者

お礼

//コンボボックスの位置を設定(1)JPanelを作り(2)パネルの上にJComboBoxを置く //(3)FlowLayoutで配置位置を設定する(4)ツールバーにパネルを設置する。 JPanel panel1 = new JPanel(); panel1.add(cb); panel1.setLayout(new FlowLayout(FlowLayout.LEFT)); tb.add(panel1); (1)のほうができました。一度パネルを作って細かい 一設定ができるんですね。ありがとうございます。。 問題は(2)の方なんですがグぐったりしたんですが よくわかりません >取り出した値を再利用 ってどういうことなんでしょうか??

noname#49664
noname#49664
回答No.1

>今のままだと画面のサイズと一緒に >幅が最大まで表示されてしまうんです。 これは、単にレイアウトマネージャがそうしているためではないですか?  レイアウトマネージャについてはわかりますか? そのあたりがわかれば、レイアウトマネージャを外すか、別のものに入れ替えるか、コンポーネントのpreffedSizeなどを設定するなどいろいろ対処法は考えられますが・・。 >別々にフォントの種類だけ変更できるメソッドや >フォントのサイズだけ変更できるメソッドって >ないんでしょうか?? そのFontインスタンスからgetFamilyやgetNameでフォントのファミリーやフォント名が、getSizeでサイズが、getStyleでスタイルが取り出せます。取り出した値を再利用して新たにFontインスタンスを作れば、サイズやスタイルだけ変更したFontが作れます。

関連するQ&A