import javax.swing.*;
import javax.swing.tree.*;
import javax.swing.event.*;
import java.awt.*;public class TreeExpandEventDemo2 extends JPanel {
DemoArea demoArea;
JTextArea textArea;
final static String newline = "\n"; public TreeExpandEventDemo2() {
super(new GridBagLayout());
GridBagLayout gridbag = (GridBagLayout) getLayout();
GridBagConstraints c = new GridBagConstraints(); c.fill = GridBagConstraints.BOTH;
c.gridwidth = GridBagConstraints.REMAINDER;
c.weightx = 1.0;
c.weighty = 1.0; c.insets = new Insets(1, 1, 1, 1);
demoArea = new DemoArea();
gridbag.setConstraints(demoArea, c);
add(demoArea); c.insets = new Insets(0, 0, 0, 0);
textArea = new JTextArea();
textArea.setEditable(false);
JScrollPane scrollPane = new JScrollPane(textArea);
scrollPane.setVerticalScrollBarPolicy(
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
scrollPane.setPreferredSize(new Dimension(200, 75));
gridbag.setConstraints(scrollPane, c);
add(scrollPane); setPreferredSize(new Dimension(450, 450));
setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
} void saySomething(String eventDescription, TreeExpansionEvent e) {
textArea.append(eventDescription + "; "
+ "path = " + e.getPath()
+ newline);
} class DemoArea extends JScrollPane implements TreeExpansionListener,
TreeWillExpandListener {
Dimension minSize = new Dimension(100, 100);
JTree tree;
Object[] willExpandOptions = {"Cancel Expansion", "Expand"};
String willExpandText = "A branch node is about to be expanded.\n"
+ "Click \"Cancel Expansion\" to prevent it.";
String willExpandTitle = "Tree Will Expand"; public DemoArea() {
TreeNode rootNode = createNodes();
tree = new JTree(rootNode);
tree.setCursor(new Cursor(Cursor.HAND_CURSOR));// set the cursor style
tree.addTreeExpansionListener(this);
tree.addTreeWillExpandListener(this); setViewportView(tree);
} private TreeNode createNodes() {
DefaultMutableTreeNode root;
DefaultMutableTreeNode grandparent;
DefaultMutableTreeNode parent;
DefaultMutableTreeNode child; root = new DefaultMutableTreeNode("San Francisco"); grandparent = new DefaultMutableTreeNode("Potrero Hill");
root.add(grandparent);
//
parent = new DefaultMutableTreeNode("Restaurants");
grandparent.add(parent);
child = new DefaultMutableTreeNode("Thai Barbeque");
parent.add(child);
child = new DefaultMutableTreeNode("Goat Hill Pizza");
parent.add(child);
//
parent = new DefaultMutableTreeNode("Grocery Stores");
grandparent.add(parent);
child = new DefaultMutableTreeNode("Good Life Grocery");
parent.add(child);
child = new DefaultMutableTreeNode("Safeway");
parent.add(child); grandparent = new DefaultMutableTreeNode("Noe Valley");
root.add(grandparent);
//
parent = new DefaultMutableTreeNode("Restaurants");
grandparent.add(parent);
child = new DefaultMutableTreeNode("Hamano Sushi");
parent.add(child);
child = new DefaultMutableTreeNode("Hahn's Hibachi");
parent.add(child);
//
parent = new DefaultMutableTreeNode("Grocery Stores");
grandparent.add(parent);
child = new DefaultMutableTreeNode("Real Foods");
parent.add(child);
child = new DefaultMutableTreeNode("Bell Market");
parent.add(child); return root;
} public Dimension getMinimumSize() {
return minSize;
} public Dimension getPreferredSize() {
return minSize;
} //Required by TreeWillExpandListener interface.
public void treeWillExpand(TreeExpansionEvent e) throws
ExpandVetoException { synchronized (this) {
try {
System.out.println("load data... ... ");//tree expandding... ...
this.wait(3000);
}
catch (InterruptedException ex) {
ex.printStackTrace();
}
} } //Required by TreeWillExpandListener interface.
public void treeWillCollapse(TreeExpansionEvent e) {
saySomething("Tree-will-collapse event detected", e);
} // Required by TreeExpansionListener interface.
public void treeExpanded(TreeExpansionEvent e) {
saySomething("Tree-expanded event detected", e);
} // Required by TreeExpansionListener interface.
public void treeCollapsed(TreeExpansionEvent e) {
saySomething("Tree-collapsed event detected", e);
}
}
/**
* Create the GUI and show it. For thread safety,
* this method should be invoked from the
* event-dispatching thread.
*/
private static void createAndShowGUI() {
//Make sure we have nice window decorations.
JFrame.setDefaultLookAndFeelDecorated(true); //Create and set up the window.
JFrame frame = new JFrame("TreeExpandEventDemo2");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Create and set up the content pane.
JComponent newContentPane = new TreeExpandEventDemo2();
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();
}
});
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货