如何衔接不同文件中的swing组件转
软件编程牛人网
2005年2月2日3:43:23
问题是:现在有个窗口类:ProjectDialog.java
?????? 主界面类是:StudentDataManagerUI.java
?????? 如何在窗口里操作后,主界面能够产生相应的变化呢?
?????? 假设ProjectDialog.java里有个JButton类型的按钮,叫 button
?????????? StudentDataManager.java里有个JTree 叫tree
?????? 要求按下button后,产生如下变化:
?????? 1.关闭窗口;
?????? 2.在后台新建一个文件夹;
?????? 3.tree能够有变化.
解决办法其实很简单(我开始怎么没想到?)
/*
*第一个文件ProjectDialog.java
*/
public class ProjectDialog extends JDialog
{
?? private JButton button;
?? private String fileName;
?? private ......;
?? .....
?? public ProjectDialog(JFrame frame, String str, boolean isModel)
?? {
????? b = new JButton("button");
?????
????? ...
?????
????? setSize(300,400);
????? setVisible(true);
?? }
?? //通过这个public方法把不同文件里的组件联系起来
?? public JButton getButton()
?? {
????? return b;
?? }
?? //等会新建的文件夹名是从这里得到的
?? public String getFileName()
?? {???
????? return fileName;
?? }
}
/*
*另外一个文件StudentDataManager.java
*/
public class StudentDataManager
{
?? private JTree tree;
?? private DefaultMutableTreeNode root;
?? private DefaultTreeModel treeModel;
?? private JButton start;
?? private ProjectDialog projectDialog;
?? private JButton projectDialogButton;
?? ....
?? public StudentDataManager()
?? {
????? start = new JButton();
????? root = new DefaultMutableTreeNode();
????? treeModel = new DefaultTreeModel();
????? tree = new JTree(treeModel);
??????????
????? .......???
????? start.addActionListener(
???????? new ActionListener()
???????????? {
????????????? public actionPerformed(ActionEvent event)
????????????? {
????????????? /*
????????????? *这里是关键性的一步,只需把新产生的窗口赋予一个变量就可以了
????????????? */
?????????????? projectDialog = new ProjectDialog(StudentDataManager.this,
???????????????????????????????????????????????? "New Project",
???????????????????????????????????????????????? "false")
?????????????? /*
?????????????? *注意上面的模态是false,为什么如果是true的话,后面给button加
?????????????? *的监听器就无效了呢?
?????????????? */
?????????????? //通过getButton()方法就可以在这里跟button加上这里需要的监听器了
?????????????? projectDialogButton = project.getButton();
?????????????? //生成一个我们写的ButtonHandler
?????????????? ButtonHandler buttonHandler = new ButtonHandler();
?????????????? /*
?????????????? *给这个button加上监听器,这样,虽然button是那个类里面的组件,
?????????????? *仍然可以对这个类里面的组件进行操作了:)
?????????????? */
?????????????? projectDialogButton.addActionListener(buttonHandler);
????????????? }????????
???????????? });
?? }
?? private class ButtonHandler implements ActionListener
?? {
????? public actionPerformed(ActionEvent event)
????? {
???????? projectDiaog.dispose();//关闭窗口
???????? String fileName = projectDialog.getFileName();
???????? File createFile = new File(fileName);
???????? creatFile.mkDir();//新建一个文件夹
???????? DefaultMutableTreeNode newNode = new DefaultMutableTreeNode(fileName);
???????? treeMode.add(newNode,root,root.getChildCount);//这里的tree作出相应的变化
???????? //完成任务:)
????? }
?? }
}
?
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/starshus/archive/2005/03/01/306422.aspx