日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java模态_java – 如何在另一个模态JDialog之上创建一个模态的JDialog

發布時間:2025/4/5 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java模态_java – 如何在另一个模态JDialog之上创建一个模态的JDialog 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我有一個模式設置對話框是一個JDialog.在這個設置窗口中,我將一些組件(包括一個按鈕)放置到另一個模式設置對話框,該對話框也是一個JDialog.我使他們成為JDialogs,因為這是我知道進行模態對話的唯一方法.

問題是這樣的:當我創建主設置對話框時,我必須構建JDialog,無需父幀或父幀.由于我的主窗口是一個JFrame,我可以把它傳遞給主設置對話框的構造函數.但是當我想創建第二個模態設置對話框時,應該將主設置對話框作為父項,我找不到一個方法來獲取JDialog的(J)框架.我確實希望通過這個主設置對話框作為父級,以便第二個設置對話框顯示在它上面.讓我們假設第二個設置對話框沒有用于傳遞位置的構造函數,只是JDialog的構造函數.

有沒有辦法得到JDialog的(J)框架?

我的設置是否存在設計缺陷,我應該用這些設置對話框中的其他內容嗎? (如果是這樣,我應該如何使這些替代設置對話框模態?)

感謝您的幫助,

埃里克

更新:

感謝大家的答案.他們讓我明白,顯然JDalog的所有者并不是絕對必要的.我認為這是對話框需要關閉所有者,直到對話框關閉,但顯然模式是獨立于所有者.我也注意到,即使是擁有者,對話框仍然不是所有者的中心,所以現在我的代碼就像:

public class CustomDialog extends JDialog {

public CustomDialog(String title) {

setModal(true);

setResizable(false);

setTitle(title);

buildGUI();

}

public Result showDialog(Window parent) {

setLocationRelativeTo(parent);

setVisible(true);

return getResult();

}

}

這也允許模態對話框中的模態對話框.

感謝你的幫助!

不確定你有什么問題,但這里是一個例子,你可以有多個模態對話框:

import java.awt.BorderLayout;

import java.awt.Window;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JDialog;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.SwingUtilities;

public class TestDialog {

protected static void initUI() {

JPanel pane = newPane("Label in frame");

JFrame frame = new JFrame("Title");

frame.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);

frame.add(pane);

frame.pack();

frame.setVisible(true);

}

public static JPanel newPane(String labelText) {

JPanel pane = new JPanel(new BorderLayout());

pane.add(newLabel(labelText));

pane.add(newButton("Open dialog"),BorderLayout.SOUTH);

return pane;

}

private static JButton newButton(String label) {

final JButton button = new JButton(label);

button.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

Window parentWindow = SwingUtilities.windowForComponent(button);

JDialog dialog = new JDialog(parentWindow);

dialog.setLocationRelativeTo(button);

dialog.setModal(true);

dialog.add(newPane("Label in dialog"));

dialog.pack();

dialog.setVisible(true);

}

});

return button;

}

private static JLabel newLabel(String label) {

JLabel l = new JLabel(label);

l.setFont(l.getFont().deriveFont(24.0f));

return l;

}

public static void main(String[] args) {

SwingUtilities.invokeLater(new Runnable() {

@Override

public void run() {

initUI();

}

});

}

}

總結

以上是生活随笔為你收集整理的java模态_java – 如何在另一个模态JDialog之上创建一个模态的JDialog的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。