- ベストアンサー
JComboBoxのサイズ変更
(1)JComboBoxをツールバーを作りそこに追加してるんですがJComboBoxのサイズを変更することってできないんでしょうか?? 今のままだと画面のサイズと一緒に 幅が最大まで表示されてしまうんです。 (2)フォントの種類とサイズを別々変更したいんですが Font("",Font.PLAIN,15); を使うとFont.PLAINというフォントの種類と 15というフォントのサイズまで変更されてしまいます。 別々にフォントの種類だけ変更できるメソッドや フォントのサイズだけ変更できるメソッドって ないんでしょうか?? 色々探したんですが見つかりません(泣 どなたかお願いします!!
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
>取り出した値を再利用 ってどういうことなんでしょうか?? 例えば、それまで設定していたFontインスタンスfontがあったとすると、 String n = font.getName(); Style s = font.getStyle(); Font font2 = new Font(n,s,24); こんな具合にすれば、フォントとスタイルが同じでサイズだけが24ポイントに変更されたFontが得られます。
その他の回答 (3)
- sasadora
- ベストアンサー率68% (59/86)
フォントの種類はわからないのですが、 サイズとスタイルだけを変えるのであれば、 Font#deriveFont(float size) Font#deriveFont(int style) が使えると思います。 どちらにしても新しくFontインスタンスを生成するので、再びsetFontする必要があります。 //サイズやフォント種類はそのままに、スタイルだけボールドにする components.setFont(component.getFont().deriveFont(Font.BOLD));
- sasadora
- ベストアンサー率68% (59/86)
(1)ツールバーの上にJPanelを置いて、その上にJComboBoxを置けばよいです。JPanelのレイアウトマネージャはなんでもいいですが、FlowLayoutあたりがよいかと思います。 (2)No.1の方のおっしゃるとおりだと思います。
お礼
//コンボボックスの位置を設定(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)の方なんですがグぐったりしたんですが よくわかりません >取り出した値を再利用 ってどういうことなんでしょうか??
>今のままだと画面のサイズと一緒に >幅が最大まで表示されてしまうんです。 これは、単にレイアウトマネージャがそうしているためではないですか? レイアウトマネージャについてはわかりますか? そのあたりがわかれば、レイアウトマネージャを外すか、別のものに入れ替えるか、コンポーネントのpreffedSizeなどを設定するなどいろいろ対処法は考えられますが・・。 >別々にフォントの種類だけ変更できるメソッドや >フォントのサイズだけ変更できるメソッドって >ないんでしょうか?? そのFontインスタンスからgetFamilyやgetNameでフォントのファミリーやフォント名が、getSizeでサイズが、getStyleでスタイルが取り出せます。取り出した値を再利用して新たにFontインスタンスを作れば、サイズやスタイルだけ変更したFontが作れます。
お礼
sasadoraさん、Kyon2_PaPaさんありがとうございます やっと理解できました!!! うっうれしいです(嬉泣