如何eclipse jface组件中TitleAreaDialog对话框上方的关闭按钮进行置灰处理

问题描述

描述如下:第一个对话框:名称为A (TDialog.java)第二个对关闭按钮进行隐藏后的对话框:名称为B (TDialog1.java)原本想用隐藏就可以解决问题的。描述:点击 A中按钮,弹出B 存在的问题:点击A中按钮,弹出B 但是用鼠标点击B时,B就自动隐藏了,没法进行操作。最小化eclipse后,桌面上显示 B对话框,并且可以对其进行操作。(代码见附件,demo不存在此问题)所以我想要对关闭按钮进行置灰处理,不知道这样处理后能不能变通解决对上述问题。或者有什么更好的方法进行处理?demo代码如下:另外:怎样对B的消息区设置提示信息 【 setMessage("Hello World!");//这样会报错】package test;import org.eclipse.jface.dialogs.TitleAreaDialog;import org.eclipse.swt.SWT;import org.eclipse.swt.events.SelectionAdapter;import org.eclipse.swt.events.SelectionEvent;import org.eclipse.swt.widgets.Button;import org.eclipse.swt.widgets.Display;import org.eclipse.swt.widgets.Shell;public class TDialog extends TitleAreaDialog {public TDialog(Shell parentShell) {super(parentShell);}public static void main(String[] args) {final Display display = Display.getDefault();final Shell shell = new Shell();shell.setSize(327, 253);Button button = new Button(shell, SWT.NONE);button.setBounds(18, 20, 153, 25);button.setText("button");button.addSelectionListener(new SelectionAdapter() {public void widgetSelected(SelectionEvent e) {TDialog1 tDialog = new TDialog1(shell);tDialog.open();}});shell.layout();shell.open();while (!shell.isDisposed()) {if (!display.readAndDispatch())display.sleep();}display.dispose();}}package test;import org.eclipse.jface.dialogs.TitleAreaDialog;import org.eclipse.swt.SWT;import org.eclipse.swt.widgets.Display;import org.eclipse.swt.widgets.Shell;public class TDialog1 extends TitleAreaDialog {final Display display = Display.getDefault();final Shell shell = new Shell();public TDialog1(Shell parentShell) {super(parentShell); //setMessage("Hello World!");//怎样set message?}@Overrideprotected int getShellStyle() {return SWT.TITLE;// 隐藏关闭按钮,置灰时不需要这个方法}}

解决方案

建议 1:TitleAreaDialog不是这么用的,其实,TitleAreaDialog是一个已经被封装完后的控件,它有一定固定的使用模式.public class TDialog extends TitleAreaDialog {public TDialog(Shell parentShell) {super(parentShell);} // JFACE的Dialog你完全不用自己去定义Shell, 只有SWT的Dialog才需要.protected Control createDialogArea(Composite parent) {Composite area = (Composite) super.createDialogArea(parent);Composite container = new Composite(area, SWT.NONE);container.setLayoutData(new GridData(GridData.FILL_BOTH));final Button button = new Button(container, SWT.NONE);button.setText("button");button.setBounds(26, 28, 44, 23);button.addSelectionListener(new SelectionAdapter() {public void widgetSelected(SelectionEvent e) {TDialog1 tDialog = new TDialog1(Display.getCurrent().getActiveShell());tDialog.open();}});return area;}protected void createButtonsForButtonBar(Composite parent) {createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true);createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false);}protected Point getInitialSize() {return new Point(500, 375);}}
解决方案二:
解答2:引用B就自动隐藏了,没法进行操作是,你设置B dialog的style不对.public class TDialog1 extends TitleAreaDialog {public TDialog1(Shell parentShell) {super(parentShell);this.setShellStyle(SWT.APPLICATION_MODAL | SWT.TITLE);}}
解决方案三:
解答1:TitleAreaDialog 不能将关闭按钮置灰, 就算你的shell 的style 是: SWT.TITLE | SWT.MIN | SWT.MAX看起来好像没有SWT.CLOSE, 只有存在上面三个style中的一个,这个窗口就有关闭按钮.

时间: 2024-10-31 20:19:18

如何eclipse jface组件中TitleAreaDialog对话框上方的关闭按钮进行置灰处理的相关文章

eclipse jface组件中如何隐藏TitleAreaDialog对话框右上方的关闭按钮

问题描述 请教一个问题,eclipse jface对话框组件中要想隐藏 TitleAreaDialog 类型对话框右上方的关闭按钮要如何处理.现在我是用的 @Override protected boolean canHandleShellCloseEvent() { return false; }来处理的,当用户点击关闭按钮时使之对应的关闭对话框的event失效.但是感觉很别扭,希望指点.谢谢! 解决方案 直接上代码了.public class TDialog extends TitleAre

在定制Eclipse SWT组件中实现MVC

Eclipse SWT(标准部件工具包)提供了丰富的 API 集来实现定制部件(widget).在这篇文章中,作者简要介绍了 MVC(模型-视图-控制器)架构,以结构化查看器的形式解释了 MVC 的当前实现,并介绍了一种使用定制 SWT 部件的实现. 什么是 MVC? MVC 架构(或设计模式)是图形用户界面(GUI)的设计样式,由三部分构成:模型.视图和控制器.MVC 把表示层从数据解耦出来,也把表示从数据的操作解耦出来. 实现 MVC 架构与其他类型的应用程序有所不同.主要的区别来自如何放置

在定制SWT组件中实现MVC

学习如何容易地把模型 - 视图 - 控制器与基于 Eclipse 的应用程序集成在 一起 简介: Eclipse SWT(标准部件工具包)提供了丰富的 API 集来实现定制部 件(widget).在这篇文章中,作者简要概括了 MVC(模型 - 视图 - 控制器) 架构,以结构化查看器的形式解释了 MVC 的当前实现,并介绍了一种使用定制 SWT 部件的实现. 什么是 MVC? MVC 架构(或设计模式)是图形用户界面(GUI)的设计样式,由三部分构成 :模型.视图和控制器.MVC 把表示层从数据

Eclipse V3.1中的Java泛型支持

Java 中的泛型 几乎从第一个版本开始,Java 技术的创立者们就已经开始讨论对该语言添加 泛型支持.C++ 通过标准模板库对泛型进行支持,但是由于缺少所有其他类(嵌 入在 Java 语言中的Object 类中)的一个统一父类,泛型的实现也受到阻碍.Java编程语言的泛型支持是其历史上最重大的语法变化.由于某些显而易见的原因,工具支持比其他 SDK 升级的步法要慢得多.尽管如此,现在 Eclipse V3.1 已经对这些语言的新特性有了出色的支持.本文重点介绍其中的一些新特 性. Java 5

android-如何从其它的方法中删除对话框?

问题描述 如何从其它的方法中删除对话框? 我创建一个对话框,按照下面的代码,提供一个标题和消息,这个对话框可以在任何地方被调用. public void alertbox(String title, String mymessage) { new AlertDialog.Builder(this) .setTitle(title) .setMessage(mymessage) .setNeutralButton(android.R.string.cancel, new DialogInterfa

怎样在J2EE组件中引用和查找Web服务

j2ee|web|web服务 本文将讨论怎么在J2EE组件中引用Web服务.并且通过JNDI来查找Web服务.在内容组织上,首先把一个EJB2.1无状态会话Bean发布成Web服务,然后开发基于JSP的Web服务客户端,最后着重介绍怎么在JSP的部署时引用Web服务,并且讨论怎么通过JNDI来查找和调用Web服务.阅读本文前您需要以下的知识和工具:J2EE1.4 SDK,并且会初步使用:掌握基本的JAX-RPC Web服务开发技能:了解JNDI的基本知识,能够使用它进行简单编程:一般的Java编

ASP.NET中通过对话框方式下载文件

ASP.NET中通过对话框方式下载文件 1 通过探出对话框提示文件下载或打开 2 通过自定义Header让特定的应用程序打开文件  使用的方法:Response.TransmitFile()  例程: Response.ContentType = "image/jpeg";Response.AppendHeader("Content-Disposition","attachment; filename=SailBig.jpg");Response

ASP组件中的安全问题 (转)

安全|问题 Microsoft推出的ASP(Active Server Page)以简单.易用.功能多.可扩充性等强大功能得到了网友和大多数网管的喜爱,大有完全代替CGI的趋势.但是我要对你说,如果使用ASP的话,你网络的安全同时也大大降低了! 在我继续说下去之前,请你完成以下步骤: 1.下载这个文件"http://home.gbsource.net/xuankong/dll.zip",解压缩后把其中的test.dll文件拷贝到"c:\windows\system"

sql2008启动报错:应用程序的组件中发生了无法处理的异常和值不能为空viewinfo

sql2008 启动报错:应用程序的组件中发生了无法处理的异常和值不能为空 viewinfo(已解决!) 1.重启sql(无效) 2.,重启系统(无效) 3.重装.net(无效) 后发现问题出在 这是因为临时处理路径出现异常造成的,主要是C:\Users\Administrator\AppData\Local\Temp下的文件夹名为[2]的文件夹出现了问题,解决方法如下: 进入C:\Users\Administrator\AppData\Local\Temp路径,也可以在C盘地址栏输入此路径进入