标签: jdialog

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

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

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

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

java browser jdialog japplet

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

第一次打开 JDialog 时运行 KeyEventDispacther,然后将其删除

我正在做一个应用程序,它必须通过键盘读取一些字符并解释它们。

为了捕获键,我打开了一个 JDialog 并设置了一个 KeyEventDispatcher,这样我就可以在 dispatchKeyEvent 方法中捕获字符。在 JDialog 中,有一个按钮可以删除 KeyEventDispatcher 并处理 JDialog。

它有两个问题:
- 第一次打开 JDialog,就像没有设置 KeyEventDispatcher
- 当我关闭并打开这个 JDialog 时,KeyEventDispatchers 正在累积(第一次打开,没有运行;第二次打开,有一个正在运行,第 3 次打开,有 2 个正在运行,...)

似乎 KeyEventDispacthers 是在 JDialog 关闭但未删除时设置的,而不是在 JDialog 打开时设置并在关闭时删除。

有人可以帮助我了解发生了什么以及我该如何解决?

这是 JDialog 类的简化版本(只有关键捕获部分):

public class SequenceDialog {
    private JDialog dialog;
    private JButton finishButton;
    private DialogKeyEventDispatcher keyEventDispatcher;

    public SequenceDialog() {
        initializeDialog();
    }

    private void initializeDialog() {
        dialog = new JDialog();
        finishButton = new JButton("Finish");

        finishButton.addActionListener(new FinishButtonListener());
        dialog.setModalityType(ModalityType.APPLICATION_MODAL);
        dialog.add(finishButton);
        setKeyListener();
        dialog.setVisible(true);
        dialog.pack();
    }

    /** Adds the KeyEventDispacther */ …
Run Code Online (Sandbox Code Playgroud)

java swing keyevent jdialog keyboard-events

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

如何只为他的父母制作JDialog onTop?

可以说,我们JFrame在同一时间可以看到几个窗口,并且每个窗口都会JDialog出现.当我们的窗口处于级联模式和对话框时setAlwaysOnTop,true所有对话框都将在最后一个窗口中可见.

我只想将Dialog组件与其所有者关联起来,这样当你在Frames之间切换时,你只会在顶部获得一个对话框,并且在单击一个框架时不会丢失该对话框.

对话框有这样的构造函数:

setAlwaysOnTop(true);
setModal(false);
Run Code Online (Sandbox Code Playgroud)

提前致谢!

java swing modal-dialog jdialog

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

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
查看次数

如何使JDialog不总是位于父级之上

我有一个生成两个JDialogs的JFrame。这三个窗口中的每个窗口都必须是可聚焦的(这是我当前编写的方式),但是JFrame不会放在对话框的顶部。当您单击任一对话框时,它们会彼此弹出(就像一个人所期望的那样),但是JFrame只是拒绝出现在最前面。

我需要它们保留JDialogs(而不是JFrames本身),因为大多数当前行为都是可取的(即,当另一个窗口/应用程序阻止任何或所有窗口时,如果选择任何窗口,它们都位于最前面) (而三个JFrame只会导致选中的一个出现)。

我的JDialogs构造函数可以达到以下效果:

SubDialog(JFrame parent /*, a handful, ofOther arguments */){
    super(parent, ModalityType.MODELESS); //not even the modeless helped
    setAlwaysOnTop(false); //not even the not always on top helped
    setUndecorated(true); //maybe this has something to do with it (unlikely, just fyi)?

    //some simple variable assignments

}
Run Code Online (Sandbox Code Playgroud)

我什至试图setAlwaysOnTop(true)在我的JFrame中扔一个。没有骰子。我感到绝望,甚至尝试了以下数字之一:

MyJFrame(String title){
    super(title);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    addWindowFocusListener(new WindowAdapter(){
        public void windowGainedFocus(WindowEvent e){
            final Window w = e.getWindow();

            //PLEASE come to the front
            w.toFront();

            //even MOAR desperation
            SwingUtilities.invokeLater(new Runnable(){
                public void run(){
                    w.toFront(); //STILL no …
Run Code Online (Sandbox Code Playgroud)

java swing jdialog modality

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

JDialog在它的JFrame父级前面

我想在Java Swing中创建一个JDialog,当它打开时,它的父窗口无法访问(就像你在Microsoft Word中打开文件浏览器对话框一样).JDialog类中是否有提供此行为的方法?

java swing jdialog

3
推荐指数
1
解决办法
6988
查看次数

检测JDialog的大小调整

如何检测JDialog调整大小的时间?(WindowListener本来是我的猜测,但似乎没有调整大小的事件处理程序.)

java swing resize jdialog

3
推荐指数
1
解决办法
2582
查看次数

如何从按钮关闭jdialog?

我有一个Jframe(美因茨),

它有一个按钮(showDialog),

当用户点击按钮时

jdialog(Dialogz)将展示,

那个jdialog有一个按钮

  • 如何从该按钮关闭jdialog(在jdialog内)?
  • 我可以在创建它的实例后更改对话模式吗?

我需要阻止该jdialog的所有者

继续我试试......

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;


    public class Mainz extends JFrame implements ActionListener{
        JButton showDialog = new JButton("show dialog");

        public Mainz() {
            setLayout(new FlowLayout());
            showDialog.addActionListener(this);
            add(showDialog);
            setVisible(true);   
        }
        @Override
        public void actionPerformed(ActionEvent e) {
            new Dialogz(this, true);
        }

        public static void main(String[]args){
            new Mainz();
    }
    }
    class Dialogz extends JDialog{
        JButton close = new JButton("close");

        public Dialogz(JFrame owner,boolean modal) {
            super(owner, modal);
            System.out.println(this.getModalityType());
            add(close);
            setLocationRelativeTo(owner); …
Run Code Online (Sandbox Code Playgroud)

java swing modal-dialog jdialog

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

无法制作JDialog模态

我试图在单击"注册"按钮时打开一个新的JDialog ..
但我无法制作JDialog模式..
我尝试过setModal(true)和setModalityType(ModalityType.DOCUMENT_MODAL); 但没有运气..(我正在使用Eclipse的WindowBuilder插件)
PS:我是JAVA的新手..
这是我的代码......

import java.awt.BorderLayout;
import java.awt.Dialog.ModalityType;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.Frame;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JScrollPane;
import javax.swing.JLabel;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.ImageIcon;
import javax.swing.JDialog;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JPasswordField;
import javax.swing.JComboBox;
import javax.swing.JButton;
import javax.xml.ws.handler.MessageContext;


public class loginpage extends JFrame {

    private JPanel contentPane;
    private JTextField userid;
    private JPasswordField password;

    /**
     * Launch the …
Run Code Online (Sandbox Code Playgroud)

java swing jframe jdialog modality

3
推荐指数
1
解决办法
8224
查看次数

如何检查jframe是否打开?

我的代码创建了一个新数组并将其发送到chat(jFrame).

String info1[]=new String[3];
 // username , userid , userid2 are variables
 info1[0]=username4;
 info1[1]=""+userid;
 info1[2]=""+userid2;

 chat.main(info1);
Run Code Online (Sandbox Code Playgroud)

但是我需要修改这段代码,以便在打开聊天jframe时使用它,然后不要打开一个新的jFrame.而是在聊天jframe中打开一个新选项卡.聊天框的代码是:

private void formWindowActivated(java.awt.event.WindowEvent evt) {       
  JScrollPane panel2 = new JScrollPane();
  JTextArea ta=new JTextArea("");
  ta.setColumns(30);
  ta.setRows(19);
  panel2.setViewportView(ta);
  jTabbedPane1.add("Hello", panel2);   
}
Run Code Online (Sandbox Code Playgroud)

java swing jframe jdialog jtabbedpane

3
推荐指数
1
解决办法
7128
查看次数