标签: jdialog

如何在用户点击JDialog之外时关闭模态JDialog?

我有一个Undecorated Modal JDialog,我想在用户点击模态对话框之外时设置为Visible(false).

这可能在Swing吗?

我正在做的是弹出一个文本字段的自定义编辑器,如日期选择器.有没有更简单的方法来做我想要的?

编辑

记住调用setVisible(true)时的模态块,所以你不能只说"不要使用模态对话框"

我已经尝试在对话框上集中监听器,它们在模态时不会触发.

java swing modal-dialog jdialog

5
推荐指数
2
解决办法
1万
查看次数

Java - JDialog不可移动

什么代码将有助于使一个JDialog不可移动的?我看了两个选项:

  1. setUndecorated(true); 哪个有效,但删除了所有的装饰.
  2. addComponentListener并覆盖该componentMoved()方法,这会导致JDialog随后调用induceEpilepticSeizure() 移动.

有任何想法吗?

java swing jdialog

5
推荐指数
1
解决办法
2576
查看次数

JOptionPane与JDialog

这是Javaranch中线程的交叉插件(包括一些图像):http://www.coderanch.com/t/567472/GUI/java/Optimal-solution-creating-multiple-dialog

我正在尝试开发一个简单的swing桌面应用程序,我想象很多不同的对话框跳转来获取用户输入.需要在各种对话框窗口中显示标签,文本字段,密码字段,组合框,复选框等.

例如:第一手创建数据库,创建第一个管理员帐户,添加用户,更改用户帐户等.

我理解JOptionPane用于创建简单快速简单的模态对话框.我真的很想知道为什么在这种情况下人们会选择一个而不是另一个.哪一个更适合使用:JOptionPane与JDialog

此外,我可以使用一些指针,如何适当地设计和实现它.

谢谢.

java swing jdialog joptionpane

5
推荐指数
2
解决办法
9287
查看次数

如何在继续之前等待JFrame关闭?

我的程序包含3个主要"部分".主要功能,登录表格和App表格.主要功能应该是这样的:打开登录表单,等待它关闭,然后打开App表单.我不能让等待的部分工作,或者更确切地说,我不知道如何去做这件事.

有人告诉我使用JDialog代替并使用setModal(true),但是使用这种方法,登录表单不会出现在任务栏上,这在我看来很糟糕.

我考虑的另一件事是在关闭后从Login内部打开应用程序,但这感觉就像糟糕的设计,因为这会使登录表单不可重用.

那么,拜托,你会建议什么?

java user-interface swing jdialog cardlayout

5
推荐指数
1
解决办法
2042
查看次数

安全地打开和关闭模态JDialog(使用SwingWorker)

我需要一种方法从数据库中获取一些数据,并阻止用户修改当前的现有数据.

我创建了一个SwingWorker来进行数据库更新,并创建了一个模态JDialog来向用户显示正在发生的事情(使用JProgressBar).模态对话框的defaultCloseOperation设置为DO_NOTHING,所以它只能通过正确的调用关闭 - 我使用setVisible(false).

MySwingWorkerTask myTask = new MySwingWorkerTask();
myTask.execute();
myModalDialog.setVisible(true);
Run Code Online (Sandbox Code Playgroud)

SwingWorker在doInBackground()中执行一些操作,最后调用:

myModalDialog.setVisible(false);
Run Code Online (Sandbox Code Playgroud)

我唯一担心的问题是:在工作人员产生之后,SwingWorker是否可能在行setVisible(false)之前执行setVisible(true)

如果是这样,setVisible(true)可以永远阻止(用户无法关闭模态窗口).

我必须实现以下内容:

while (!myModalDialog.isVisible()) {
    Thread.sleep(150);
}
myModalDialog.setVisible(false);
Run Code Online (Sandbox Code Playgroud)

确保它真的会被关闭?

java swing multithreading jdialog swingworker

5
推荐指数
1
解决办法
4209
查看次数

在div中保留一个jQuery对话框

我正在尝试创建一些jQuery对话框,但我想将它们的位置限制在父div中.我正在使用以下代码创建它们(在旁注上,oppacity选项不起作用......):

var d= $('<div title="Title goes here"></div>').dialog({
            autoOpen: true,
            closeOnEscape: false,
            draggable: true,
            resizable: false,
            width: dx,
            height: dy
        });

        d.draggable('option', 'containment', 'parent');
        d.draggable('option', 'opacity', 0.45);

        $('#controlContent').append(d.parent());
Run Code Online (Sandbox Code Playgroud)

jquery-ui jdialog jquery-ui-draggable

4
推荐指数
2
解决办法
7819
查看次数

用户切换浏览器选项卡时如何从 JApplet 中隐藏 JDialog?

问题:用户从applet启动长时间操作;显示带有进度条的 JDialog。用户打开/切换到另一个浏览器选项卡 - JDialog 仍然显示(并惹恼用户)。

当用户切换到另一个选项卡时,应该隐藏 JDialog;并在用户切换回来时再次显示。

注意:我看到有类似问题的问题,解决方案是添加 windowActivated/deactivated 侦听器。它对我不起作用,因为窗口中有多个框架,其中一个包含小程序。当用户单击另一个框架时,会投射 windowDeactivate 事件,但用户仍在同一选项卡中。

java browser jdialog japplet

4
推荐指数
1
解决办法
910
查看次数

如何用Java代码真正关闭JDialog?

我知道setVisible(false),dispose()但他们无法真正关闭JDialog.当我让另一个线程停止时,JDialog的线程仍在运行.

我不能使用System.exit(0),因为其他线程需要运行一段时间.

在代码之后,我最终在程序结束时通过System.exit(0)解决问题.

public class CsUpdateCtrl {

/**
 * ??service
 */
private CsUpdateService service;

private CsUpdateCtrl() {
    this.service = (CsUpdateService) RmiUtil.getBean(RmiUtil.Service.csupdate);
}

private static final Logger log = Logger.getLogger(CsUpdateCtrl.class.getName());

public static void main(String[] args) throws IOException {

    LogUtil.read();

    log.info("????????");

    CsUpdateCtrl ctrl = null;
    try {
        ctrl = new CsUpdateCtrl();
    } catch (Exception e) {
        SwingUtil.lookAndFeel();
        SwingUtil.message("???????!");
        log.info("???????:" + e.getMessage());
        return;
    }
    ctrl.start(ctrl.service.version());
}

/**
 * ?????????????????????
 */
private void start(int version) {
    PropertyIO io …
Run Code Online (Sandbox Code Playgroud)

java swing jdialog

4
推荐指数
1
解决办法
1万
查看次数

如何为具有圆角的JDialog设置3D边框?

我可以在我的JDialog中添加圆角边框,如在Java Swing如何创建圆角标题边框.但它仍然是一种颜色.我想让边框看起来像3D.

这是我尝试的方式.

Graphics2D g2d = (Graphics2D) g;
        Color c1 = getBackground();
        Color c2 = color1.darker();
        int w = getWidth();
        int h = getHeight();

      GradientPaint gp = new GradientPaint(
                0, 0, c1,
                0, h, c2);

        g2d.setPaint(gp);
        g2d.fill3DRect(0,0, w, h,true);
Run Code Online (Sandbox Code Playgroud)

然后,没有3D外观,但边框已经扩大了边框颜色.
我怎样才能做到这一点?

任何示例代码或链接将受到高度赞赏.

java swing border jdialog rounded-corners

4
推荐指数
2
解决办法
2627
查看次数

Java Swing - JDialog默认焦点

在互联网上找到这样一个信息:

"当JDialog(或JFrame)可见时,默认情况下焦点放在第一个可聚焦组件上."

让我们考虑一下这样的代码:

public class MyDialog extends JDialog{
    // Dialog's components:
    private JLabel dialogLabel1 = new JLabel("Hello");
    private JLabel dialogLabel2 = new JLabel("Message");
    private JButton dialogBtn = new JButton("Sample Btn text");

    public MyDialog(JFrame parent, String title, ModalityType modality){
        super(parent, title, modality);
        dialogBtn.setName("Button");    //
        dialogLabel1.setName("Label1"); // - setting names
        dialogLabel2.setName("Label2"); //
        setTitle(title);
        setModalityType(modality);
        setSize(300, 100);
        setLocation(200, 200);
        // adding comps to contentPane
        getContentPane().add(dialogLabel1, BorderLayout.PAGE_START);
        getContentPane().add(dialogBtn, BorderLayout.CENTER);
        getContentPane().add(dialogLabel2, BorderLayout.PAGE_END);
        pack();
    }

    public void showDialog(){
        setVisible(true);
        listComps(rootPane.getComponents());
        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    } …
Run Code Online (Sandbox Code Playgroud)

java swing focus jdialog

4
推荐指数
1
解决办法
3015
查看次数