E-mail:yuu7777@hotmail.com

もう一つのホームページ辞典へ

[戻る]

JTreeのテストプログラム


package testKTree;
import java.awt.*;
import java.awt.event.*; //MouseListenerインターフェイスを使う。
import javax.swing.*;
import javax.swing.tree.*;//TreeNode、DefaultMutableTreeNode、DefaultTreeModel用
import javax.swing.text.*;//JTextComponent用
import javax.swing.event.*; //TreeSelectionListenerなど

/*
 * Created on 2004/12/07
 *
 *JTreeの使い方をテストするプログラム
 *JScrollPaneに対するaddMouseListener指定は、動かなかった。なかに入れる部品(この例ではjtree)に指定しなければなっらなかった。
  */

/*
 * TreeとEditを左右に分けたパネル 
 */
class TestJTreePanel extends JPanel implements MouseListener ,ActionListener,TreeSelectionListener{
	//Tree関連フィールド
	public TreeNode rootNode = new DefaultMutableTreeNode("rootです");//ルートノード
	public JTree jtree = new JTree(rootNode);				//Treeの表示とGUIインターフェイス
	private DefaultTreeModel treeModel = new DefaultTreeModel(rootNode);      //ノード操作クラス
	public JScrollPane treePane = new JScrollPane(jtree);;
	private int mousePressedX =-1;
	private int mousePressedY =-1;
	
	//操作関連(ポップアップメニュー)
	JPopupMenu menu = new JPopupMenu();
	JMenuItem  itemAdd = new JMenuItem("追加");
	
	//エディタフィールド	
	public JTextComponent jtext = new JEditorPane();
	public JScrollPane textPane = new JScrollPane(jtext);
	
	public TestJTreePanel(){//コンストラクタ
		super(new GridLayout(1,0));//1行,0列

		//スプリットで、左右に分ける。
		JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);//水平方向で分ける
		splitPane.setLeftComponent(treePane);
		splitPane.setRightComponent(textPane);
		Dimension minimumSize = new Dimension(100, 100);
		treePane.setMinimumSize(minimumSize);
		textPane.setMinimumSize(minimumSize);
		splitPane.setDividerLocation(100);
		add(splitPane);
		//add(treePane);

		//操作関連(ポップアップメニュー)
		menu.add(itemAdd);

		//イベント設定
		jtree.addMouseListener(this);
		itemAdd.addActionListener(this);
	}

	//TreeSelectionListenerの実装(ノードを選択した時に実行)
	public void valueChanged(javax.swing.event.TreeSelectionEvent evt) {

	}
	
	//MouseListener関連
	public void mouseClicked(MouseEvent e){}
	public void mousePressed(MouseEvent e){ 
		mousePressedX = e.getX();	//マウスクリックイベントが発生した位置を取得
		mousePressedY = e.getY();
		int status = e.getModifiers(); //状態を取得
		if((status & MouseEvent.BUTTON3_MASK) != 0){	//右ボタン
			menu.show(treePane,mousePressedX,mousePressedY);
		}
	}
	public void mouseReleased(MouseEvent e){}
	public void mouseEntered(MouseEvent e){}
	public void mouseExited(MouseEvent e){}
	
	//メニュー関連
	public void actionPerformed(ActionEvent e){
		if(e.getSource() == itemAdd){
			//マウス操作対象のノードパスを取得
			TreePath selPath = jtree.getSelectionPath();
			if(selPath != null){
				Object obj = selPath.getLastPathComponent(); 
				DefaultMutableTreeNode selNode = (DefaultMutableTreeNode) obj; //選択ノード
				DefaultMutableTreeNode newNode = new DefaultMutableTreeNode("新規ノード");				
				treeModel.insertNodeInto(newNode,selNode,0);
			}
		}
	}
}


/* 
   */
public class TestJTree extends JApplet{

	public void init(){//アプレットがロードされた時に呼ばれる。
		this.getContentPane().add(new TestJTreePanel() );
	}
	public static void main(String[] args) {
		//Optional: Specify who draws the window decorations. 
		JFrame.setDefaultLookAndFeelDecorated(true);
		TestJTreeFrame fram = new TestJTreeFrame();
	}
}

class TestJTreeFrame extends JFrame{
	TestJTreePanel panel = new TestJTreePanel();
	public TestJTreeFrame(){
		super("テスト");
		//Optional: What happens when the frame closes?
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		this.getContentPane().add(panel, BorderLayout.CENTER);

		this.setSize(400,300);
		this.setVisible(true);
	}
	
}




SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送