Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.awt.Dimension;
- import java.awt.event.FocusEvent;
- import java.awt.event.FocusListener;
- import javax.swing.Box;
- import javax.swing.BoxLayout;
- import javax.swing.JFrame;
- import javax.swing.JPanel;
- import javax.swing.JTextField;
- import javax.swing.JTree;
- import javax.swing.event.TreeSelectionEvent;
- import javax.swing.event.TreeSelectionListener;
- import javax.swing.tree.DefaultMutableTreeNode;
- import javax.swing.tree.DefaultTreeModel;
- import javax.swing.tree.TreeSelectionModel;
- public class JTreeFocusTest extends JFrame{
- private static final long serialVersionUID = 1L;
- public JTreeFocusTest() {
- super("JTree Focus Test");
- JPanel panel = new JPanel(true);
- panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
- MyTree tree = new MyTree();
- panel.add(tree);
- panel.add(Box.createVerticalStrut(20));
- panel.add(new MyTextField(tree));
- panel.add(Box.createVerticalStrut(20));
- panel.add(new JTextField(30));
- getContentPane().add(panel);
- setVisible(true);
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- pack();
- }
- public static void main(String[] args){
- new JTreeFocusTest();
- }
- }
- class MyTree extends JTree{
- private static final long serialVersionUID = 1L;
- public MyTree() {
- DefaultMutableTreeNode root = new DefaultMutableTreeNode(new MyNode("Root", "Root"));
- DefaultMutableTreeNode child1 = new DefaultMutableTreeNode(new MyNode("Child 1", "DOC122122"));
- root.add(child1);
- DefaultMutableTreeNode child2 = new DefaultMutableTreeNode(new MyNode("Child 2", "DOC134342"));
- root.add(child2);
- DefaultTreeModel model = new DefaultTreeModel(root, true);
- setModel(model);
- getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
- setSelectionPath(getPathForRow(0));
- }
- }
- class MyTextField extends JTextField implements FocusListener, TreeSelectionListener{
- private static final long serialVersionUID = 1L;
- private MyTree tree;
- public MyTextField(MyTree tree) {
- this.tree = tree;
- setText("Some");
- addFocusListener(this);
- this.tree.addTreeSelectionListener(this);
- Dimension dim = new Dimension(200, 20);
- setPreferredSize(dim);
- setMaximumSize(dim);
- setMinimumSize(dim);
- }
- @Override
- public void focusGained(FocusEvent e) {System.out.println("TextField gained focus");}
- @Override
- public void focusLost(FocusEvent e) {
- getSelectedNodeUserObj().setValue(getText());
- }
- @Override
- public void valueChanged(TreeSelectionEvent e) {
- setText(getSelectedNodeUserObj().getValue());
- }
- private MyNode getSelectedNodeUserObj(){
- return ((MyNode)((DefaultMutableTreeNode)this.tree.getSelectionPath().getLastPathComponent()).getUserObject());
- }
- }
- class MyNode{
- private String label = "";
- private String value = "";
- public MyNode(String label, String value) {
- this.label = label;
- this.value = value;
- }
- public void setValue(String value){
- this.value = value;
- }
- public String getValue(){
- return value;
- }
- public String toString(){
- return label;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement