表示方法の変更(項目の幅と高さ)
広告
今までは各項目毎の幅と高さは自動的に決められていましたが、指定することも可能です(自動の場合は一番大きい項目の幅に合わせられていると思います)。
幅に関しては"setFixedCellWidth"メソッドを、高さに関してはと"setFixedCellHeight"メソッドを使います。
setFixedCellWidthメソッド
public void setFixedCellWidth(int width)
リストにあるすべてのセルの幅を設定します。width が -1 の場合、各リスト 要素の cellRenderer コンポーネントに getPreferredSize を適用することに より、セル幅が計算されます。 このプロパティのデフォルト値は -1 です。 パラメータ: width - ピクセル単位の、リスト内のすべてのセルの幅
setFixedCellHeightメソッド
public void setFixedCellHeight(int height)
リストにあるすべてのセルの高さを設定します。height が -1 の場合、各リ スト要素の cellRenderer コンポーネントに getPreferredSize を適用するこ とにより、セルの高さが計算されます。 このプロパティのデフォルト値は -1 です。 パラメータ: height - リスト内のすべてのセルの高さをピクセル数で指定する整数
幅や高さを指定せずに自動で決める場合には「-1」を指定します。
実際にサンプルで試してみます。
import javax.swing.*; import java.awt.*; import java.util.Vector; public class JListSample extends JFrame{ protected JList list; public static void main(String[] args){ JListSample test = new JListSample("JListSample"); /* 終了処理を変更 */ test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); test.setBounds( 10, 10, 250, 160); test.setVisible(true); } JListSample(String title){ setTitle(title); /* JListの初期データ */ Vector<String> initData = new Vector<String>(); StringBuffer sb; for (int i = 0 ; i < 30 ; i++){ sb = new StringBuffer(); sb.append("項目"); sb.append(i); initData.add(new String(sb)); } list = new JList(initData); list.setVisibleRowCount(0); list.setLayoutOrientation(JList.HORIZONTAL_WRAP); list.setFixedCellWidth(60); list.setFixedCellHeight(40); JScrollPane sp = new JScrollPane(); sp.getViewport().setView(list); sp.setPreferredSize(new Dimension(200, 80)); JPanel p = new JPanel(); p.add(sp); getContentPane().add(p, BorderLayout.CENTER); } }
実行結果は下記のようになります。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。