Java Jtree mouseEvent 如果没有被选中
Java Jtree mouseEvent if nothing is selected
我想弄清楚如何编写一个事件,如果在 Swing JTree 中单击并且鼠标没有单击树中的任何内容,则得到一个显示 "nothing".[=12 的 println =]
假设我有一棵树 'info_tree' 有一个 AWT.event.Mouwesvent 这样的:
private void info_treeMouseClicked(java.awt.event.MouseEvent evt) {
if(info_tree.getSelectionPath() /*something along the lines of is empty or if !info_tree.getSelectionPath().isEmpty()*/
){system.out.println("Nothing");
}else{
system.out.println("Something");
}
}
我找不到任何东西来比较 selectedPath 或树的元素。
不妨试试
If (info_tree.getSelectionPath()==null)
但是,您可能想要调换输出线。因为原样是 true/false 条件。如果为假,它将转到其他地方。这样也能解决。
你可以试试这个程序:
import javax.swing.*;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreePath;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class JTreeGetSelectedNode extends JFrame {
public JTreeGetSelectedNode() throws HeadlessException {
initializeUI();
}
private void initializeUI() {
setSize(200, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
DefaultMutableTreeNode root = new DefaultMutableTreeNode("Countries");
DefaultMutableTreeNode asia = new DefaultMutableTreeNode("Asia");
String[] countries = new String[] {"India", "Singapore", "Indonesia", "Vietnam"};
for (String country : countries) {
DefaultMutableTreeNode node = new DefaultMutableTreeNode(country);
asia.add(node);
}
DefaultMutableTreeNode northAmerica = new DefaultMutableTreeNode("North America");
countries = new String[] {"United States", "Canada"};
for (String country : countries) {
DefaultMutableTreeNode node = new DefaultMutableTreeNode(country);
northAmerica.add(node);
}
DefaultMutableTreeNode southAmerica = new DefaultMutableTreeNode("South America");
countries = new String[] {"Brazil", "Argetina", "Uruguay"};
for (String country : countries) {
DefaultMutableTreeNode node = new DefaultMutableTreeNode(country);
southAmerica.add(node);
}
DefaultMutableTreeNode europe = new DefaultMutableTreeNode("Europe");
countries = new String[] {"United Kingdom", "Germany", "Spain", "France", "Italy"};
for (String country : countries) {
DefaultMutableTreeNode node = new DefaultMutableTreeNode(country);
europe.add(node);
}
root.add(asia);
root.add(northAmerica);
root.add(southAmerica);
root.add(europe);
final JTree tree = new JTree(root);
JScrollPane pane = new JScrollPane(tree);
pane.setPreferredSize(new Dimension(200, 400));
JButton button = new JButton("Get Selected");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Object paths = tree.getLastSelectedPathComponent();
if(paths == null){
System.out.println("nothig");
}else{
System.out.println("Something");
}
}
});
getContentPane().setLayout(new BorderLayout());
getContentPane().add(pane, BorderLayout.CENTER);
getContentPane().add(button, BorderLayout.SOUTH);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new JTreeGetSelectedNode().setVisible(true);
}
});
}
}
我想弄清楚如何编写一个事件,如果在 Swing JTree 中单击并且鼠标没有单击树中的任何内容,则得到一个显示 "nothing".[=12 的 println =]
假设我有一棵树 'info_tree' 有一个 AWT.event.Mouwesvent 这样的:
private void info_treeMouseClicked(java.awt.event.MouseEvent evt) {
if(info_tree.getSelectionPath() /*something along the lines of is empty or if !info_tree.getSelectionPath().isEmpty()*/
){system.out.println("Nothing");
}else{
system.out.println("Something");
}
}
我找不到任何东西来比较 selectedPath 或树的元素。
不妨试试
If (info_tree.getSelectionPath()==null)
但是,您可能想要调换输出线。因为原样是 true/false 条件。如果为假,它将转到其他地方。这样也能解决。
你可以试试这个程序:
import javax.swing.*;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreePath;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class JTreeGetSelectedNode extends JFrame {
public JTreeGetSelectedNode() throws HeadlessException {
initializeUI();
}
private void initializeUI() {
setSize(200, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
DefaultMutableTreeNode root = new DefaultMutableTreeNode("Countries");
DefaultMutableTreeNode asia = new DefaultMutableTreeNode("Asia");
String[] countries = new String[] {"India", "Singapore", "Indonesia", "Vietnam"};
for (String country : countries) {
DefaultMutableTreeNode node = new DefaultMutableTreeNode(country);
asia.add(node);
}
DefaultMutableTreeNode northAmerica = new DefaultMutableTreeNode("North America");
countries = new String[] {"United States", "Canada"};
for (String country : countries) {
DefaultMutableTreeNode node = new DefaultMutableTreeNode(country);
northAmerica.add(node);
}
DefaultMutableTreeNode southAmerica = new DefaultMutableTreeNode("South America");
countries = new String[] {"Brazil", "Argetina", "Uruguay"};
for (String country : countries) {
DefaultMutableTreeNode node = new DefaultMutableTreeNode(country);
southAmerica.add(node);
}
DefaultMutableTreeNode europe = new DefaultMutableTreeNode("Europe");
countries = new String[] {"United Kingdom", "Germany", "Spain", "France", "Italy"};
for (String country : countries) {
DefaultMutableTreeNode node = new DefaultMutableTreeNode(country);
europe.add(node);
}
root.add(asia);
root.add(northAmerica);
root.add(southAmerica);
root.add(europe);
final JTree tree = new JTree(root);
JScrollPane pane = new JScrollPane(tree);
pane.setPreferredSize(new Dimension(200, 400));
JButton button = new JButton("Get Selected");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Object paths = tree.getLastSelectedPathComponent();
if(paths == null){
System.out.println("nothig");
}else{
System.out.println("Something");
}
}
});
getContentPane().setLayout(new BorderLayout());
getContentPane().add(pane, BorderLayout.CENTER);
getContentPane().add(button, BorderLayout.SOUTH);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new JTreeGetSelectedNode().setVisible(true);
}
});
}
}