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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

我有一個(gè)模式設(shè)置對話框是一個(gè)JDialog.在這個(gè)設(shè)置窗口中,我將一些組件(包括一個(gè)按鈕)放置到另一個(gè)模式設(shè)置對話框,該對話框也是一個(gè)JDialog.我使他們成為JDialogs,因?yàn)檫@是我知道進(jìn)行模態(tài)對話的唯一方法.

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

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

我的設(shè)置是否存在設(shè)計(jì)缺陷,我應(yīng)該用這些設(shè)置對話框中的其他內(nèi)容嗎? (如果是這樣,我應(yīng)該如何使這些替代設(shè)置對話框模態(tài)?)

感謝您的幫助,

埃里克

更新:

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

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();

}

}

這也允許模態(tài)對話框中的模態(tài)對話框.

感謝你的幫助!

不確定你有什么問題,但這里是一個(gè)例子,你可以有多個(gè)模態(tài)對話框:

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();

}

});

}

}

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。