/** * セルレンダラ */protected class MyCellRenderer extends JPanel implements TreeCellRenderer { /** * チェックボックス */ JCheckBox check; /** * ラベル */ JLabel label; /** * コンストラクタ */ public MyCellRenderer() { add(check = new JCheckBox()); add(label = new JLabel("")); check.setBackground(UIManager.getColor("Tree.textBackground")); } /** * 現在のツリーセルの値を value に設定します。 */ public Component getTreeCellRendererComponent(JTree tree,Object value, boolean sel,boolean expanded,boolean leaf,int row,boolean hasFocus){ TreeNode node = (TreeNode)value; label.setText(node.toString()); label.setForeground(Color.black); check.setVisible(true); Icon icon = null; if (条件を入れる) { if(!leaf) icon = UIManager.getIcon("Tree.openIcon"); check.setSelected(true); } else { check.setSelected(false); } label.setIcon(icon); return this; } /** * @return セルのサイズを返します。 */ public Dimension getPreferredSize() { Dimension d_check = new Dimension(0,0); if (check.isVisible()) d_check = check.getPreferredSize(); Dimension d_label = label.getPreferredSize(); return new Dimension(d_check.width + d_label.width, (d_check.height < d_label.height ? d_label.height : d_check.height)); } /** * セルのレイアウトを設定します。 */ public void layout() { Dimension d_check = new Dimension(0,0); if (check.isVisible()) d_check = check.getPreferredSize(); Dimension d_label = label.getPreferredSize(); int y_check = 0; int y_label = 0; if (d_check.height < d_label.height) { y_check = (d_label.height - d_check.height)/2; } else { y_label = (d_check.height - d_label.height)/2; } if (check.isVisible()) { check.setLocation(0,y_check); check.setBounds(0,y_check,d_check.width,d_check.height); } label.setLocation(d_check.width,y_label); label.setBounds(d_check.width,y_label,d_label.width,d_label.height); } /** * 背景色を設定します。 * * @param color 背景色 */ public void setBackground(Color color) { if (color instanceof ColorUIResource) color = null; super.setBackground(color); }}
≪ Appletからデフォルトのプリンター以外に印刷 | Javaテクニカルサンプル集 | ポリゴンの重心を求める ≫
FC2Ad
この人とブロともになる
このブログをリンクに追加する