vector里添加了东西,如何让jtree刷新,现在我的做法是new 了一个新的 jtree,这样是不合理的,求正确做法import java.awt.Color;
import java.awt.Component;
import java.util.Vector;import javax.swing.BorderFactory;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.TreeCellRenderer;public class NewJFrame1 extends javax.swing.JFrame { public NewJFrame1() { initComponents();
init();
} private void init() {
rootVector.addElement(fileVector);
} // <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); jButton1.setText("addfile");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
}); jButton2.setText("addleaf");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
}); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING).addGroup(
layout.createSequentialGroup().addContainerGap().addComponent(
jScrollPane1,
javax.swing.GroupLayout.PREFERRED_SIZE,
158,
javax.swing.GroupLayout.PREFERRED_SIZE).addPreferredGap(
javax.swing.LayoutStyle.ComponentPlacement.UNRELATED).addGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(
jButton1).addComponent(jButton2)).addContainerGap(32, Short.MAX_VALUE)));
layout.setVerticalGroup(layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING).addGroup(
layout.createSequentialGroup().addContainerGap().addGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(
layout
.createSequentialGroup()
.addComponent(jButton1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jButton2)).addComponent(
jScrollPane1,
javax.swing.GroupLayout.DEFAULT_SIZE,
424,
Short.MAX_VALUE)).addContainerGap())); pack();
}// </editor-fold> private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
rootVector.addElement(new NamedVector("新建文件夹"));
initTree();
} private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
fileVector.addElement(new JLabel("ccc"));
initTree();
} public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() { public void run() {
new NewJFrame1().setVisible(true);
}
});
} private void initTree() {
tree = new JTree(rootVector);
TreeCellRenderer renderer = new BookCellRenderer();
tree.setCellRenderer(renderer); jScrollPane1.setViewportView(tree);
} // Variables declaration - do not modify
private javax.swing.JButton jButton1; private javax.swing.JButton jButton2; private javax.swing.JScrollPane jScrollPane1; // End of variables declaration
public Vector fileVector = new NamedVector("新建文件夹"); public Vector rootVector = new NamedVector("root"); private javax.swing.JTree tree;
}class NamedVector extends Vector { String name; public NamedVector(String name) {
this.name = name;
} public String toString() {
return "[" + name + "]";
}
}class BookCellRenderer extends DefaultTreeCellRenderer { JPanel jPanel; DefaultTreeCellRenderer defaultRenderer = new DefaultTreeCellRenderer(); public BookCellRenderer() {
jPanel = new JPanel(); jPanel.setBorder(BorderFactory.createLineBorder(Color.black));
backgroundSelectionColor = defaultRenderer.getBackgroundSelectionColor();
backgroundNonSelectionColor = defaultRenderer.getBackgroundNonSelectionColor();
} public Component getTreeCellRendererComponent(JTree tree,
Object value,
boolean selected,
boolean expanded,
boolean leaf,
int row,
boolean hasFocus) { Component returnValue = null;
if ((value != null) && (value instanceof DefaultMutableTreeNode)) {
Object userObject = ((DefaultMutableTreeNode) value).getUserObject();
if (userObject instanceof JLabel) { if(jPanel != null){
jPanel = new JPanel();
jPanel.setBorder(BorderFactory.createLineBorder(Color.black));
}
jPanel.add((JLabel) userObject); if (selected) {
jPanel.setBackground(backgroundSelectionColor);
} else {
jPanel.setBackground(backgroundNonSelectionColor);
}
jPanel.setEnabled(tree.isEnabled());
returnValue = jPanel;
}
}
if (returnValue == null) {
returnValue =
defaultRenderer.getTreeCellRendererComponent(
tree,
value,
selected,
expanded,
leaf,
row,
hasFocus);
}
return returnValue;
}
}
import java.awt.Component;
import java.util.Vector;import javax.swing.BorderFactory;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.TreeCellRenderer;public class NewJFrame1 extends javax.swing.JFrame { public NewJFrame1() { initComponents();
init();
} private void init() {
rootVector.addElement(fileVector);
} // <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); jButton1.setText("addfile");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
}); jButton2.setText("addleaf");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
}); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING).addGroup(
layout.createSequentialGroup().addContainerGap().addComponent(
jScrollPane1,
javax.swing.GroupLayout.PREFERRED_SIZE,
158,
javax.swing.GroupLayout.PREFERRED_SIZE).addPreferredGap(
javax.swing.LayoutStyle.ComponentPlacement.UNRELATED).addGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(
jButton1).addComponent(jButton2)).addContainerGap(32, Short.MAX_VALUE)));
layout.setVerticalGroup(layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING).addGroup(
layout.createSequentialGroup().addContainerGap().addGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(
layout
.createSequentialGroup()
.addComponent(jButton1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jButton2)).addComponent(
jScrollPane1,
javax.swing.GroupLayout.DEFAULT_SIZE,
424,
Short.MAX_VALUE)).addContainerGap())); pack();
}// </editor-fold> private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
rootVector.addElement(new NamedVector("新建文件夹"));
initTree();
} private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
fileVector.addElement(new JLabel("ccc"));
initTree();
} public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() { public void run() {
new NewJFrame1().setVisible(true);
}
});
} private void initTree() {
tree = new JTree(rootVector);
TreeCellRenderer renderer = new BookCellRenderer();
tree.setCellRenderer(renderer); jScrollPane1.setViewportView(tree);
} // Variables declaration - do not modify
private javax.swing.JButton jButton1; private javax.swing.JButton jButton2; private javax.swing.JScrollPane jScrollPane1; // End of variables declaration
public Vector fileVector = new NamedVector("新建文件夹"); public Vector rootVector = new NamedVector("root"); private javax.swing.JTree tree;
}class NamedVector extends Vector { String name; public NamedVector(String name) {
this.name = name;
} public String toString() {
return "[" + name + "]";
}
}class BookCellRenderer extends DefaultTreeCellRenderer { JPanel jPanel; DefaultTreeCellRenderer defaultRenderer = new DefaultTreeCellRenderer(); public BookCellRenderer() {
jPanel = new JPanel(); jPanel.setBorder(BorderFactory.createLineBorder(Color.black));
backgroundSelectionColor = defaultRenderer.getBackgroundSelectionColor();
backgroundNonSelectionColor = defaultRenderer.getBackgroundNonSelectionColor();
} public Component getTreeCellRendererComponent(JTree tree,
Object value,
boolean selected,
boolean expanded,
boolean leaf,
int row,
boolean hasFocus) { Component returnValue = null;
if ((value != null) && (value instanceof DefaultMutableTreeNode)) {
Object userObject = ((DefaultMutableTreeNode) value).getUserObject();
if (userObject instanceof JLabel) { if(jPanel != null){
jPanel = new JPanel();
jPanel.setBorder(BorderFactory.createLineBorder(Color.black));
}
jPanel.add((JLabel) userObject); if (selected) {
jPanel.setBackground(backgroundSelectionColor);
} else {
jPanel.setBackground(backgroundNonSelectionColor);
}
jPanel.setEnabled(tree.isEnabled());
returnValue = jPanel;
}
}
if (returnValue == null) {
returnValue =
defaultRenderer.getTreeCellRendererComponent(
tree,
value,
selected,
expanded,
leaf,
row,
hasFocus);
}
return returnValue;
}
}
解决方案 »
- 如何改变一个类中私有字段的值
- 中文编码问题
- 如何把字符串转换为时间???
- java.util.ResourceBundle 和java.util.properties 这两个类有什么区别?
- ▲▲▲为什么我得到的网页时间和大小有问题啊▲▲▲
- 我要得到一个当前日期的java.sql.date的值,如何最才最简单的方法
- 对象传输问题!
- 一个很奇怪的NoClassDefFoundError!大家帮忙讨论一下!
- 用JBUILDER6,Applet做数据库查询,为什么IE看不见?
- 我要学习JAVA,不知有什么好资料可看
- 帮我看一下为何swing的JButton鼠标事件与JButton的setEnabled有这样情况?
- SocketChannel问题
楼主【archer_xy】截止到2008-07-09 11:15:30的历史汇总数据(不包括此帖):
发帖的总数量:1 发帖的总分数:50 每贴平均分数:50
回帖的总数量:2 得分贴总数量:0 回帖的得分率:0%
结贴的总数量:1 结贴的总分数:50
无满意结贴数:0 无满意结贴分:0
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:100.00%
无满意结贴率:0.00 % 无满意结分率:0.00 %
敬礼!
import java.awt.Component;
import java.util.Vector;import javax.swing.BorderFactory;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.MutableTreeNode;
import javax.swing.tree.TreeCellRenderer;public class NewJFrame1 extends javax.swing.JFrame { public NewJFrame1() { initComponents();
init();
} private void init() {
rootVector.addElement(fileVector);
} // <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); jButton1.setText("addfile");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
}); jButton2.setText("addleaf");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
}); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING).addGroup(
layout.createSequentialGroup().addContainerGap().addComponent(
jScrollPane1,
javax.swing.GroupLayout.PREFERRED_SIZE,
158,
javax.swing.GroupLayout.PREFERRED_SIZE).addPreferredGap(
javax.swing.LayoutStyle.ComponentPlacement.UNRELATED).addGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(
jButton1).addComponent(jButton2)).addContainerGap(32, Short.MAX_VALUE)));
layout.setVerticalGroup(layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING).addGroup(
layout.createSequentialGroup().addContainerGap().addGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(
layout
.createSequentialGroup()
.addComponent(jButton1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jButton2)).addComponent(
jScrollPane1,
javax.swing.GroupLayout.DEFAULT_SIZE,
424,
Short.MAX_VALUE)).addContainerGap())); pack();
}// </editor-fold> private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
rootVector.addElement(new NamedVector("新建文件夹"));
initTree();
} private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
((DefaultMutableTreeNode) ((DefaultMutableTreeNode) tree.getModel().getRoot())
.getChildAt(0)).add(new DefaultMutableTreeNode("ccc"));
// fileVector.addElement(new JLabel("ccc"));
tree.expandRow(0);
tree.updateUI();
} public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() { public void run() {
new NewJFrame1().setVisible(true);
}
});
} private void initTree() {
tree = new JTree(rootVector);
TreeCellRenderer renderer = new BookCellRenderer();
tree.setCellRenderer(renderer); jScrollPane1.setViewportView(tree);
} // Variables declaration - do not modify
private javax.swing.JButton jButton1; private javax.swing.JButton jButton2; private javax.swing.JScrollPane jScrollPane1; // End of variables declaration
public Vector fileVector = new NamedVector("新建文件夹"); public Vector rootVector = new NamedVector("root"); private javax.swing.JTree tree;
}class NamedVector extends Vector { String name; public NamedVector(String name) {
this.name = name;
} public String toString() {
return "[" + name + "]";
}
}class BookCellRenderer extends DefaultTreeCellRenderer { JPanel jPanel; DefaultTreeCellRenderer defaultRenderer = new DefaultTreeCellRenderer(); public BookCellRenderer() {
jPanel = new JPanel(); jPanel.setBorder(BorderFactory.createLineBorder(Color.black));
backgroundSelectionColor = defaultRenderer.getBackgroundSelectionColor();
backgroundNonSelectionColor = defaultRenderer.getBackgroundNonSelectionColor();
} public Component getTreeCellRendererComponent(JTree tree,
Object value,
boolean selected,
boolean expanded,
boolean leaf,
int row,
boolean hasFocus) { Component returnValue = null;
if ((value != null) && (value instanceof DefaultMutableTreeNode)) {
Object userObject = ((DefaultMutableTreeNode) value).getUserObject();
if (userObject instanceof JLabel) { if (jPanel != null) {
jPanel = new JPanel();
jPanel.setBorder(BorderFactory.createLineBorder(Color.black));
}
jPanel.add((JLabel) userObject); if (selected) {
jPanel.setBackground(backgroundSelectionColor);
} else {
jPanel.setBackground(backgroundNonSelectionColor);
}
jPanel.setEnabled(tree.isEnabled());
returnValue = jPanel;
}
}
if (returnValue == null) {
returnValue =
defaultRenderer.getTreeCellRendererComponent(
tree,
value,
selected,
expanded,
leaf,
row,
hasFocus);
}
return returnValue;
}
}
((DefaultMutableTreeNode) ((DefaultMutableTreeNode) tree.getModel().getRoot()).getChildAt(0)).add(new DefaultMutableTreeNode(new JLabel("haha")));
thank you