⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 multilinecellrenderer.java

📁 Java中Swing界面库中几个类使用的例子
💻 JAVA
字号:
/*  (swing1.1beta3) swing#977 */ package jp.gr.java_conf.tame.swing.tree;import java.io.*;import java.awt.*;import javax.swing.*;import javax.swing.tree.*;import javax.swing.plaf.ColorUIResource;/** * @version 1.0 11/09/98 */public class MultiLineCellRenderer extends JPanel implements TreeCellRenderer {  protected JLabel       icon;  protected TreeTextArea text;    public MultiLineCellRenderer() {    setLayout(new BoxLayout(this,BoxLayout.X_AXIS));        icon = new JLabel() {          public void setBackground(Color color) {        if(color instanceof ColorUIResource)          color = null;        super.setBackground(color);      }       };       add(icon);    add(Box.createHorizontalStrut(4));    add(text  = new TreeTextArea());  }  public Component getTreeCellRendererComponent(JTree tree, Object value,               boolean isSelected, boolean expanded,               boolean leaf, int row, boolean hasFocus) {    String  stringValue = tree.convertValueToText(value, isSelected,			expanded, leaf, row, hasFocus);    setEnabled(tree.isEnabled());    text.setText(stringValue);    text.setSelect(isSelected);    text.setFocus(hasFocus);    if (leaf) {      icon.setIcon(UIManager.getIcon("Tree.leafIcon"));    } else if (expanded) {      icon.setIcon(UIManager.getIcon("Tree.openIcon"));    } else {      icon.setIcon(UIManager.getIcon("Tree.closedIcon"));    }	        return this;  }    public Dimension getPreferredSize() {    Dimension iconD = icon.getPreferredSize();    Dimension textD = text.getPreferredSize();    int height = iconD.height < textD.height ?                 textD.height : iconD.height;    return new Dimension(iconD.width + textD.width, height);  }     public void setBackground(Color color) {    if (color instanceof ColorUIResource)      color = null;    super.setBackground(color);  }          class TreeTextArea extends JTextArea {    Dimension preferredSize;        TreeTextArea() {      setLineWrap(true);      setWrapStyleWord(true);      setOpaque(true);    }        public void setBackground(Color color) {	if(color instanceof ColorUIResource)	    color = null;	super.setBackground(color);    }        public void setPreferredSize(Dimension d) {      if (d != null) {        preferredSize = d;      }    }     public Dimension getPreferredSize() {      return preferredSize;    }    public void setText(String str) {      FontMetrics fm = getToolkit().getFontMetrics(getFont());      BufferedReader br = new BufferedReader(new StringReader(str));      String line;      int maxWidth = 0,lines = 0;      try {        while ((line = br.readLine()) != null) {          int width = SwingUtilities.computeStringWidth(fm,line);          if (maxWidth < width) {            maxWidth = width;          }          lines++;        }      } catch (IOException ex) {        ex.printStackTrace();      }         lines = (lines < 1) ? 1: lines;        int height = fm.getHeight() * lines;      setPreferredSize(new Dimension(maxWidth +6,height));      super.setText(str);    }        void setSelect(boolean isSelected) {      Color bColor;      if (isSelected) {        bColor = UIManager.getColor("Tree.selectionBackground");      } else {        bColor = UIManager.getColor("Tree.textBackground");      }      super.setBackground(bColor);    }        void setFocus(boolean hasFocus) {      if (hasFocus) {        Color lineColor = UIManager.getColor("Tree.selectionBorderColor");        setBorder(BorderFactory.createLineBorder(lineColor));      } else {        setBorder(BorderFactory.createEmptyBorder(1,1,1,1));      }          }  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -