如何衔接不同文件中的swing组件

原创 2005年03月01日 13:36:00

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作出相应的变化
         //完成任务:)
      }
   }
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

Java中Swing开发体验,画面间数据传递。

利用Java中Swing进行开发时,画面间数据传递可用通过getXXX()或构造函数的参数传递。 通过多次使用,发发现: 1、如果是主画面传给子画面的数据时,最好用子画面构造函数的参数来进行数据传递。...

GFX游戏引擎衔接文件简述(一)c++代码部分

头文件:ATemplate.h #ifndef ATEMPLATE_H #define ATEMPLATE_H #include "common/gfx.h" typedef struct { v...

java的AWT和Swing的不同

AWT 是Abstract Window ToolKit (抽象窗口工具包)的缩写,这个工具包提供了一套与本地图形界面进行交互的接口。AWT 中的图形函数与操作系统所提供的图形函数之间有着一一对应的关...

Substance开源产品--做出不同的SWING界面

import java.awt.BorderLayout;   import java.awt.Dimension;   import java.awt.Toolkit;     import jav...

java的awt和swing有什么不同

转自百度知道 AWT 是Abstract Window ToolKit (抽象窗口工具包)的缩写,这个工具包提供了一套与本地图形界面进行交互的接口。AWT 中的图形函数与操作系统所提供的图形函数...
  • akiyame
  • akiyame
  • 2014年05月31日 19:03
  • 476

查看javax.swing.plaf.FontUIResource对各个组件字体的设置

public static void main(String[] args) { String s; int k; Enumeration keys =...

Swing 写的日期时间组件

Swing 写的日期时间组件

java swing最简单实例(2) 往JFrame里面放一个容器或组件

可以往JFrame里面放的东西有两种,Containers和Components.介绍了如果添加一个容器或组件...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何衔接不同文件中的swing组件
举报原因:
原因补充:

(最多只允许输入30个字)