关于树的问题

c15852462458 2010-05-18 09:35:34
我想实现树, 要像myeclipse中的package explorer视图中的树那样的,那上面的树一个项目一个根,那是一个树还是多个树?
如果是多个树,在一个滚动面板上如果加多个树呢,一个滚动面板的viewport只能显示一个组件,viewport里加一个jpanel,jpanel里加两个树,tree展开时,滚动条又不出来。
如果只是一个树,用vector构造jtree,可以显示多个根的树,但显示出来后,再动态添加到vector里的节点就显示不了。
应该怎么弄呢?
...全文
128 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
vae819723280 2010-06-11
  • 打赏
  • 举报
回复
过来看看吧?额~俺是新手,呵呵,帮不了呢~
dracularking 2010-05-18
  • 打赏
  • 举报
回复
哦,如果是要像package exlorer那样,以树的第一代子节点作为每一个package,同时不显示树根,这样可以吗? setRootVisible(false)
c15852462458 2010-05-18
  • 打赏
  • 举报
回复
JScrollPane添加组件,要用setViewPortView(Component c)或getViewPort().add(Component c)吧,这只能显示一个啊,要显示多个,估计得放JPanel放JScrollPane上,再把多个组件放JPanel上吧
dracularking 2010-05-18
  • 打赏
  • 举报
回复
不是非常熟悉,但我对只能显示一个组件表示怀疑
lu76689614 2010-05-18
  • 打赏
  • 举报
回复
学习中
justwalking 2010-05-18
  • 打赏
  • 举报
回复
友情帮顶,你说的是swing里的树,还是swt里的树
c15852462458 2010-05-18
  • 打赏
  • 举报
回复
谢谢dracularking了
dracularking 2010-05-18
  • 打赏
  • 举报
回复
哦,那可能是哪个地方错了,看看这个sun的例子吧


package components;

/**
* A 1.4 application that requires the following additional files:
* TreeDemoHelp.html
* arnold.html
* bloch.html
* chan.html
* jls.html
* swingtutorial.html
* tutorial.html
* tutorialcont.html
* vm.html
*/

import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;

import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeSelectionModel;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.ImageIcon;

import java.net.URL;
import java.io.IOException;
import java.awt.Dimension;
import java.awt.GridLayout;

public class TreeIconDemo extends JPanel
implements TreeSelectionListener {
private JEditorPane htmlPane;
private JTree tree;
private URL helpURL;
private static boolean DEBUG = false;

public TreeIconDemo() {
super(new GridLayout(1,0));

//Create the nodes.
DefaultMutableTreeNode top =
new DefaultMutableTreeNode("The Java Series");
createNodes(top);

//Create a tree that allows one selection at a time.
tree = new JTree(top);
tree.getSelectionModel().setSelectionMode
(TreeSelectionModel.SINGLE_TREE_SELECTION);
tree.setRootVisible(false);
//Set the icon for leaf nodes.
ImageIcon leafIcon = createImageIcon("images/middle.gif");
if (leafIcon != null) {
DefaultTreeCellRenderer renderer = new DefaultTreeCellRenderer();
renderer.setLeafIcon(leafIcon);
tree.setCellRenderer(renderer);
} else {
System.err.println("Leaf icon missing; using default.");
}

//Listen for when the selection changes.
tree.addTreeSelectionListener(this);

//Create the scroll pane and add the tree to it.
JScrollPane treeView = new JScrollPane(tree);

//Create the HTML viewing pane.
htmlPane = new JEditorPane();
htmlPane.setEditable(false);
initHelp();
JScrollPane htmlView = new JScrollPane(htmlPane);

//Add the scroll panes to a split pane.
JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
splitPane.setTopComponent(treeView);
splitPane.setBottomComponent(htmlView);

Dimension minimumSize = new Dimension(100, 50);
htmlView.setMinimumSize(minimumSize);
treeView.setMinimumSize(minimumSize);
splitPane.setDividerLocation(100); //XXX: ignored in some releases
//of Swing. bug 4101306
//workaround for bug 4101306:
//treeView.setPreferredSize(new Dimension(100, 100));

splitPane.setPreferredSize(new Dimension(500, 300));

//Add the split pane to this panel.
add(splitPane);
}

/** Required by TreeSelectionListener interface. */
public void valueChanged(TreeSelectionEvent e) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode)
tree.getLastSelectedPathComponent();

if (node == null) return;

Object nodeInfo = node.getUserObject();
if (node.isLeaf()) {
BookInfo book = (BookInfo)nodeInfo;
displayURL(book.bookURL);
if (DEBUG) {
System.out.print(book.bookURL + ": \n ");
}
} else {
displayURL(helpURL);
}
if (DEBUG) {
System.out.println(nodeInfo.toString());
}
}

private class BookInfo {
public String bookName;
public URL bookURL;

public BookInfo(String book, String filename) {
bookName = book;
bookURL = TreeIconDemo.class.getResource(filename);
if (bookURL == null) {
System.err.println("Couldn't find file: "
+ filename);
}
}

public String toString() {
return bookName;
}
}

private void initHelp() {
String s = "TreeDemoHelp.html";
helpURL = TreeIconDemo.class.getResource(s);
if (helpURL == null) {
System.err.println("Couldn't open help file: " + s);
} else if (DEBUG) {
System.out.println("Help URL is " + helpURL);
}

displayURL(helpURL);
}

private void displayURL(URL url) {
try {
if (url != null) {
htmlPane.setPage(url);
} else { //null url
htmlPane.setText("File Not Found");
if (DEBUG) {
System.out.println("Attempted to display a null URL.");
}
}
} catch (IOException e) {
System.err.println("Attempted to read a bad URL: " + url);
}
}

private void createNodes(DefaultMutableTreeNode top) {
DefaultMutableTreeNode category = null;
DefaultMutableTreeNode book = null;

category = new DefaultMutableTreeNode("Books for Java Programmers");
top.add(category);

//original Tutorial
book = new DefaultMutableTreeNode(new BookInfo
("The Java Tutorial: A Short Course on the Basics",
"tutorial.html"));
category.add(book);

//Tutorial Continued
book = new DefaultMutableTreeNode(new BookInfo
("The Java Tutorial Continued: The Rest of the JDK",
"tutorialcont.html"));
category.add(book);

//JFC Swing Tutorial
book = new DefaultMutableTreeNode(new BookInfo
("The JFC Swing Tutorial: A Guide to Constructing GUIs",
"swingtutorial.html"));
category.add(book);

//Bloch
book = new DefaultMutableTreeNode(new BookInfo
("Effective Java Programming Language Guide",
"bloch.html"));
category.add(book);

//Arnold/Gosling
book = new DefaultMutableTreeNode(new BookInfo
("The Java Programming Language", "arnold.html"));
category.add(book);

//Chan
book = new DefaultMutableTreeNode(new BookInfo
("The Java Developers Almanac",
"chan.html"));
category.add(book);

category = new DefaultMutableTreeNode("Books for Java Implementers");
top.add(category);

//VM
book = new DefaultMutableTreeNode(new BookInfo
("The Java Virtual Machine Specification",
"vm.html"));
category.add(book);

//Language Spec
book = new DefaultMutableTreeNode(new BookInfo
("The Java Language Specification",
"jls.html"));
category.add(book);
}

/** Returns an ImageIcon, or null if the path was invalid. */
protected static ImageIcon createImageIcon(String path) {
java.net.URL imgURL = TreeIconDemo.class.getResource(path);
if (imgURL != null) {
return new ImageIcon(imgURL);
} else {
System.err.println("Couldn't find file: " + path);
return null;
}
}

/**
* Create the GUI and show it. For thread safety,
* this method should be invoked from the
* event-dispatching thread.
*/
private static void createAndShowGUI() {
//Create and set up the window.
JFrame frame = new JFrame("TreeIconDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//Create and set up the content pane.
TreeIconDemo newContentPane = new TreeIconDemo();
newContentPane.setOpaque(true); //content panes must be opaque
frame.setContentPane(newContentPane);

//Display the window.
frame.pack();
frame.setVisible(true);
}

public static void main(String[] args) {
//Schedule a job for the event-dispatching thread:
//creating and showing this application's GUI.
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}

c15852462458 2010-05-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 dracularking 的回复:]

哦,如果是要像package exlorer那样,以树的第一代子节点作为每一个package,同时不显示树根,这样可以吗? setRootVisible(false)
[/Quote]
根不显示,好像叶子也显示不出来
内容概要:本文介绍了一个基于Python多智能体的作业批改反馈协同辅助系统的设计与实现。系统通过构建多个专业智能体(如题目解析、答案分析、代码审查、评分、反馈生成和审核协调等),实现对多样化作业内容(包括文本、代码、实验报告等)的自动化批改与反馈生成。项目采用模块化架构,涵盖数据接入标准化、任务调度与状态管理、多智能体异步协同、评分与证据建模、反馈生成与质量控制等核心模型。系统强调批改过程的可解释性与教育价值,保留评分依据与错误证据,并支持人工复核与教学数据追溯。通过FastAPI提供接口服务,支持本地运行或集成至在线教学平台。; 适合人群:具备一定Python编程基础,熟悉Web开发、异步编程与数据建模的开发者,尤其是从事教育科技、智能评测系统研发的技术人员或高校研究人员;也适用于希望了解多智能体系统在教育场景中应用的教学设计者。; 使用场景及目标:① 解决传统作业批改效率低、评分不一致、反馈空泛等问题;② 实现多类型作业(如程序设计、论述题、实验报告)的自动化分析与结构化评分;③ 生成具有错误定位、原因分析与改进建议的高质量学习反馈;④ 构建可扩展、可追溯、可集成的教学辅助平台,支持后续接入更多智能体与教学功能; 阅读建议:此资源以实际项目为导向,结合模型设计与代码示例(如Pydantic数据校验、ast代码分析、asyncio异步协同、FastAPI接口等),建议读者结合代码实践,深入理解多智能体协同机制与教育系统工程化实现方法,并可根据具体教学需求进行功能拓展与优化。

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧