您的位置 首页 java

尚学堂Java学习笔记:Java对话框

对话框是一个从其它窗口弹出的窗口。它的目的是处理一些特殊的争议和它们的细节而不使原来的窗口陷入混乱之中。对话框大量在设置窗口的编程环境中使用,但就像前面提到的一样,鲜于在程序片中使用。

我们需要从对话类处继承以创建其它类型的窗口、像帧一样的对话框。和窗框不同,对话框不能拥有菜单条也不能改变光标,但除此之外它们十分的相似。一个对话框拥有布局管理器(默认的是BorderLayout 布局管理器)和过载action()等等,或用handleEvent() 去处理事件。我们会注意到handleEvent()的一个重要差异:当WINDOW_DESTORY 事件发生时,我们并不希望关闭正在运行的应用程序!

相反,我们可以使用对话窗口通过调用dispace()释放资源。在下面的例子中,对话框是由定义在那儿作为类的ToeButton 的特殊按钮组成的网格构成的(利用GridLayout 布局管理器)。ToeButton 按钮围绕它自已画了一个帧,并且依赖它的状态:在空的中的“X”或者“O”。它从空白开始,然后依靠使用者的选择,转换成“X”或“O”。但是,当我们单击在按钮上时,它会在“X”和“O”之间来回交换。(这产生了一种类似填字游戏的感觉,当然比它更令人讨厌。)另外,这个对话框可以被设置为在主应用程序窗口中为很多的行和列变更号码。

ToeButton 类保留了一个句柄到它ToeDialog 型的父类中。正如前面所述,ToeButton 和ToeDialog 高度的结合因为一个ToeButton 只能被一个ToeDialog 所使用,但它却解决了一系列的问题,事实上这实在不是一个糟糕的解决方案因为没有另外的可以记录用户选择的对话类。当然我们可以使用其它的制造ToeDialog.turn(ToeButton 的静态的一部分)方法。这种方法消除了它们的紧密联系,但却阻止了我们一次拥有多个ToeDialog(无论如何,至少有一个正常地运行)。paint()是一种与图形有关的方法:它围绕按钮画出矩形并画出“X”或“O”。这完全是冗长的计算,但却十分的直观。

一个鼠标单击被过载的mouseDown()方法所俘获,最要紧的是检查是否有事件写在按钮上。如果没有,父窗口会被询问以找出谁选择了它并用来确定按钮的状态。值得注意的是按钮随后交回到父类中并且改变它的选择。如果按钮已经显示这为“X”和“O”,那么它们会被改变状态。我们能注意到本书第三章中描述的在这些计算中方便的使用的三个一组的If-else。当一个按钮的状态改变后,按钮会被重画。

ToeDialog 的构建器十分的简单:它像我们所需要的一样增加一些按钮到GridLayout 布局管理器中,然后调整每个按钮每边大小为50 个像素(如果我们不调整窗口,那么它就不会显示出来)。注意handleEvent()正好为WINDOW_DESTROY 调用dispose(),因此整个应用程序不会被关闭。

ToeTest 设置整个应用程序以创建TextField(为输入按钮网格的行和列)和“go”按钮。我们会领会action()在这个程序中使用不太令人满意的“字符串匹配”技术来测试按钮的按下(请确定我们拼写和大写都是正确的!)。当按钮按下时,TextField 中的数据将被取出,并且,因为它们在字符串结构中,所以需要利用静态的Integer.paresInt()方法来转变成中断。一旦对话类被建立,我们就必须调用show()方法来显示和激活它。

我们会注意到ToeDialog 对象赋值给一个对话句柄 d。这是一个上溯造型的例子,尽管它没有真正地产生重要的差异,因为所有的事件都是show()调用的。但是,如果我们想调用ToeDialog 中已经存在的一些方法,我们需要对ToeDialog 句柄赋值,就不会在一个上溯中丢失信息。

1. 文件对话类在一些操作系统中拥有许多的特殊内建对话框去处理选择的事件,例如:字库,颜色,打印机以及类似的事件。几乎所有的操作系统都支持打开和保存文件,但是,Java 的FileDialog 包更容易使用。当然这会不再检测所有使用的程序片,因为程序片在本地磁盘上既不能读也不能写文件。(这会在新的浏览器中交换程序片的信任关系。)

对一个“打开文件”对话框,我们使用构建器设置两个自变量;首先是父窗口句柄,其次是FileDialog 标题条的标题。setFile()方法提供一个初始文件名--也许本地操作系统支持通配符,因此在这个例子中所有的.java 文件最开头会被显示出来。setDirectory()方法选择文件决定开始的目录(一般而言,操作系统允许用户改变目录)。

show()命令直到对话类关闭才返回。FileDialog 对象一直存在,因此我们可以从它那里读取数据。如果我们调用getFile()并且它返回空,这意味着用户退出了对话类。文件名和调用getDirectory()方法的结果都显示在TextFields 里。

按钮的保存工作使用同样的方法,除了因为FileDialog 而使用不同的构建器。这个构建器设置了三个自变量并且第三的一个自变量必须为FileDialog.SAVE 或FileDialog.OPEN。

文章来源:智云一二三科技

文章标题:尚学堂Java学习笔记:Java对话框

文章地址:https://www.zhihuclub.com/179031.shtml

关于作者: 智云科技

热门文章

网站地图