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

📄 s20.htm

📁 Java2Swingt界面设计
💻 HTM
📖 第 1 页 / 共 5 页
字号:
            import java.util.*;            <p>public class Test extends JApplet {<br>              public void init() {<br>              JTree tree = new JTree();<br>              JScrollPane scrollPane = new JScrollPane(tree);<br>              JComboBox combo = new JComboBox();</p>            <p> combo.addItem(&quot;red&quot;);<br>              combo.addItem(&quot;blue&quot;);<br>              combo.addItem(&quot;green&quot;);<br>              combo.addItem(&quot;orange&quot;);<br>              combo.addItem(&quot;yellow&quot;);<br>              combo.addItem(&quot;magenta&quot;);</p>            <p> tree.setCellEditor(new DefaultTreeCellEditor(<br>              tree, new DefaultTreeCellRenderer(),<br>              new ColorEditor(tree, combo)));</p>            <p> tree.setEditable(true);</p>            <p> getContentPane().add(scrollPane);<br>              }<br>              }<br>              class ColorEditor extends DefaultCellEditor {<br>              private JTree tree;</p>            <p> public ColorEditor(JTree tree, JComboBox comboBox) {<br>              super(comboBox);<br>              this.tree = tree;<br>              }<br>              public boolean isCellEditable(EventObject e) {<br>              boolean rv = false; // return value</p>            <p> if(e instanceof MouseEvent) {<br>              MouseEvent me = (MouseEvent)e;</p>            <p> if(me.getClickCount() == 3) {<br>              TreePath path =<br>              tree.getPathForLocation(me.getX(), me.getY()); </p>            <p> if(path.getPathCount() == 1) // root node<br>              return false;</p>            <p> DefaultMutableTreeNode node = <br>              (DefaultMutableTreeNode)<br>              path.getLastPathComponent(); <br>              <br>              rv = node.getParent().toString().equals(&quot;colors&quot;);<br>              }<br>              }<br>              return rv;<br>              }<br>              }</p>            <hr size="1" noshade>            <p> 20.8 绘制和编辑:学习一个样例</p>            <p>&nbsp;</p>            <p> 20.8.1 Test类</p>            <p>&nbsp;</p>            <p align="center"><b>例20-15 绘制和编辑:一个学习样例</b></p>            <hr noshade size="1">            import javax.swing.*;<br>            import javax.swing.event.*;<br>            import javax.swing.tree.*;<br>            import java.awt.*;<br>            import java.awt.event.*;<br>            import java.io.File;<br>            import java.util.EventObject;            <p>public class Test extends JFrame {<br>              public Test() {<br>              JTree tree = new JTree(createTreeModel());<br>              JScrollPane scrollPane = new JScrollPane(tree);</p>            <p> FileNodeRenderer renderer = new FileNodeRenderer();<br>              FileNodeEditor editor = new FileNodeEditor();<br>              <br>              tree.setEditable(true);<br>              tree.setCellRenderer(renderer);<br>              tree.setCellEditor(new ImmediateEditor(tree, <br>              renderer, editor));</p>            <p> getContentPane().add(scrollPane, BorderLayout.CENTER);</p>            <p> tree.addTreeExpansionListener(new TreeExpansionListener(){<br>              public void treeCollapsed(TreeExpansionEvent e) {<br>              }<br>              public void treeExpanded(TreeExpansionEvent e) {<br>              TreePath path = e.getPath();<br>              FileNode node = (FileNode)<br>              path.getLastPathComponent();</p>            <p> if( ! node.isExplored())<br>              node.explore();<br>              }<br>              });<br>              tree.getCellEditor().addCellEditorListener(<br>              new CellEditorListener() {<br>              public void editingCanceled(ChangeEvent e) {<br>              CellEditor cellEditor = (CellEditor)e.getSource();<br>              SelectableFile sf = <br>              (SelectableFile)<br>              cellEditor.getCellEditorValue();</p>            <p> System.out.println(&quot;editing canceled: &quot; + <br>              sf.toString());<br>              }<br>              public void editingStopped(ChangeEvent e) {<br>              CellEditor cellEditor = (CellEditor)e.getSource();<br>              SelectableFile sf = <br>              (SelectableFile)<br>              cellEditor.getCellEditorValue();</p>            <p> System.out.println(&quot;editing stopped: &quot; + <br>              sf.toString());<br>              }<br>              });<br>              }<br>              private DefaultTreeModel createTreeModel() {<br>              File root = new File(&quot;E:/&quot;);<br>              FileNode rootNode = new FileNode(root), node;</p>            <p> rootNode.explore();<br>              return new DefaultTreeModel(rootNode);<br>              }<br>              public static void main(String args[]) {<br>              GJApp.launch(new Test(),&quot;JTree File Explorer&quot;,<br>              300,300,450,400);<br>              }<br>              }<br>              class SelectableFile {<br>              private File file;<br>              private boolean selected = false;</p>            <p> public SelectableFile(File file) {<br>              this.file = file;<br>              }<br>              public String toString() {<br>              return file.toString() + &quot; selected: &quot; + selected;<br>              }<br>              public void setSelected(boolean s) { selected = s; }<br>              public boolean isSelected() { return selected; }<br>              public File getFile() { return file; }<br>              }<br>              class FileNode extends DefaultMutableTreeNode {<br>              private boolean explored = false;</p>            <p> public FileNode(File file) { <br>              setUserObject(new SelectableFile(file)); <br>              }<br>              public boolean getAllowsChildren() { return isDirectory(); }<br>              public boolean isLeaf() { return !isDirectory(); }</p>            <p> public File getFile() { <br>              SelectableFile sf = (SelectableFile)getUserObject(); <br>              return sf.getFile();<br>              }<br>              public boolean isSelected() {<br>              SelectableFile sf = (SelectableFile)getUserObject(); <br>              return sf.isSelected();<br>              }<br>              public void setSelected(boolean b) {<br>              SelectableFile sf = (SelectableFile)getUserObject(); <br>              sf.setSelected(b);<br>              }<br>              public boolean isDirectory() {<br>              File file = getFile();<br>              return file.isDirectory();<br>              }<br>              public String toString() {<br>              File file = getFile();<br>              String filename = file.toString();<br>              int index = filename.lastIndexOf(&quot;\\&quot;);</p>            <p> return (index != -1 &amp;&amp; index != filename.length()-1) ?               <br>              filename.substring(index+1) : <br>              filename;<br>              }<br>              public void explore() { explore(false); }<br>              public boolean isExplored() { return explored; }</p>            <p> public void explore(boolean force) {<br>              if(!isExplored() || force) {<br>              File file = getFile();<br>              File[] children = file.listFiles();</p>            <p> for(int i=0; i &lt; children.length; ++i) <br>              add(new FileNode(children[i]));</p>            <p> explored = true;<br>              }<br>              }<br>              }<br>              class FileNodeRenderer extends DefaultTreeCellRenderer {<br>              protected JCheckBox checkBox = new JCheckBox(&quot;backup&quot;);<br>              private Component strut = Box.createHorizontalStrut(5);<br>              private JPanel panel = new JPanel();</p>            <p> public FileNodeRenderer() {<br>              panel.setBackground(<br>              UIManager.getColor(&quot;Tree.textBackground&quot;));<br>              <br>              setOpaque(false);<br>              checkBox.setOpaque(false);<br>              panel.setOpaque(false);</p>            <p> panel.setLayout(new FlowLayout(FlowLayout.CENTER,0,0));<br>              panel.add(this);<br>              panel.add(strut);<br>              panel.add(checkBox);</p>            <p> } <br>              public Component getTreeCellRendererComponent(<br>              JTree tree, Object value, <br>              boolean selected, boolean expanded,<br>              boolean leaf, int row, <br>              boolean hasFocus) {<br>              FileNode node = (FileNode)value;</p>            <p> super.getTreeCellRendererComponent(<br>              tree, value, selected, expanded,<br>              leaf, row, hasFocus);</p>            <p> checkBox.setVisible(node.isDirectory());<br>              checkBox.setSelected(node.isSelected());</p>            <p> return panel;<br>              }<br>              public Dimension getCheckBoxOffset() {<br>              Graphics g = panel.getGraphics();<br>              int xoffset = 0;</p>            <p> if(g != null) {<br>              try {<br>              FontMetrics fm = g.getFontMetrics();<br>              xoffset = fm.stringWidth(getText()) + <br>              strut.getPreferredSize().width;<br>              }<br>              finally {<br>              g.dispose();<br>              }<br>              }<br>              return new Dimension(xoffset, 0);<br>              }<br>              }<br>              class FileNodeEditorRenderer extends FileNodeRenderer {<br>              public Component getTreeCellRendererComponent(<br>              JTree tree, Object value, <br>              boolean selected, boolean expanded,<br>              boolean leaf, int row, <br>              boolean hasFocus) {<br>              Component c = super.getTreeCellRendererComponent(tree, <br>              value, selected, expanded, <br>              leaf, row, hasFocus);<br>              setIcon(null);<br>              return c;<br>              }<br>              public JCheckBox getCheckBox() {<br>              return checkBox;<br>              }<br>              }<br>              class FileNodeEditor extends Abs

⌨️ 快捷键说明

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