我有一个非常具体的问题,我想知道是否有办法更改JDialog的所有者(可以使用构造函数设置).我想没有"官方"的可能性(除了黑客),但我想确保我没有错过任何东西.关于这个主题的任何想法或提示都会有所帮助,谢谢......
// This is supposed to show a modal dialog and then hide it again. In practice,
// this works about 75% of the time, and the other 25% of the time, the dialog
// stays visible.
// This is on Ubuntu 10.10, running:
// OpenJDK Runtime Environment (IcedTea6 1.9) (6b20-1.9-0ubuntu1)
// This always prints
// setVisible(true) about to happen
// setVisible(false) about to happen
// setVisible(false) has just happened
// even when the dialog stays visible.
package modalproblemdemo;
import java.awt.Frame; …Run Code Online (Sandbox Code Playgroud) 如何设置JDialog标题的字体大小.我在极高分辨率的显示器(500万像素)上显示JDialogs,对话标题不清晰.我需要在每个对话框的基础上执行此操作,因为应用程序是多监视器,一些对话框出现在较低分辨率的监视器上,一些对话框出现在较高分辨率的监视器上.
我正在尝试使用windowBuilder创建自定义JDialog,但在一开始我遇到了一些问题.所以他们在这里:
我使用windowBuilder创建了简单的Jdialog.这是代码:
public class GroupFrame extends JDialog {
private final JPanel contentPanel = new JPanel();
/**
* Launch the application.
*/
public static void main(String[] args) {
try {
GroupFrame dialog = new GroupFrame();
dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
dialog.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Create the dialog.
*/
public GroupFrame() {
setBounds(100, 100, 450, 300);
getContentPane().setLayout(new BorderLayout());
contentPanel.setLayout(new FlowLayout());
contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
getContentPane().add(contentPanel, BorderLayout.CENTER);
{
JPanel buttonPane = new JPanel();
buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
getContentPane().add(buttonPane, BorderLayout.SOUTH);
{
JButton …Run Code Online (Sandbox Code Playgroud) 是否可以向JDialog添加最大化/最小化按钮?如果没有,那么我们可以将这些按钮添加到JPanel吗?
我有一个JPanel,在该面板中有一个JDialog.我想添加一个最小化/最大化按钮,这样当单击该按钮时,JDialog和JDialog下的组件会根据JPanel进行调整.就像当我点击最大化然后jpanel应该放大并且该面板内的组件(JDialog)也被放大,反之亦然最小化按钮.我从这里得到的解决方案是JFrame中的JPanel.但我的JPanel只是独立的.
我尝试了setPrefferedSize和setSize方法,但对话框仍以最小尺寸打开.
private void method() {
commandDialog.setPreferredSize(new Dimension(100,100));
- - -
- - - //Components added to dialogPanel
commandDialog.add(dialogPanel);
// Tried this as well: commandDialog.setSize(40, 40);
commandDialog.validate();
commandDialog.setVisible(true);
}
Run Code Online (Sandbox Code Playgroud) JFrame当新框架弹出时,我试图禁用"主" .我想要它,所以你不能点击或拖动该帧上的任何东西.我尝试制作新的帧JDialog,但是没有禁用另一帧.我还看了关于这个的另一个帖子,它建议使它成为一个JDialog但它仍然不起作用.我真的需要帮助这样做.谢谢.这是我用来制作的代码JDialog,是他们的任何问题吗?
editDialog=new JDialog(IntroScreen.frame);
Run Code Online (Sandbox Code Playgroud)
IntroScreen.frame 代表"主要"框架.
我使用下面的代码淡入一个JDialog具有javax.swing.Timer:
float i = 0.0F;
final Timer timer = new Timer(50, null);
timer.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (i == 0.8F){
timer.stop();
}
i = i + 0.1F;
setOpacity(i);
}
});
timer.start();
Run Code Online (Sandbox Code Playgroud)
将Dialog是很好的褪色,与预期的效果,但在最后一个IllegalArgumentException出现说:
The value of opacity should be in the range [0.0f .. 1.0f]
Run Code Online (Sandbox Code Playgroud)
但问题是我不是很远,i = 0.8F所以它怎么可能是一个非法的论点?
行发生异常:setOpacity(i);
有什么建议?解决方案?
我在JDialog中使用的JTree节点可见性存在问题.当我想向模型添加新节点时,Jtree不会刷新.
奇怪的是节点正在更新,就像我设置setRootVisible(true)一样.
这是代码.提前致谢
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
public class TestClass {
JTree tree;
DefaultTreeModel dm;
JDialog dialog;
public TestClass(){
JFrame frame = new JFrame("title");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
JPanel showPane = new JPanel();
showPane.setLayout(new BorderLayout());
dm = new DefaultTreeModel(new DefaultMutableTreeNode("root"));
tree = new JTree(dm);
tree.setRootVisible(false);
JButton button = new JButton("add node");
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
DefaultMutableTreeNode root …Run Code Online (Sandbox Code Playgroud) 我在Java/Swing GUI项目中看到以下代码:
MyDialog dlg = new MyDialog(parent, isFizz);
MyDialogResults results = dlg.getResults();
eventBus.fireEvent(new MyDialogEvent(results));
Run Code Online (Sandbox Code Playgroud)
在上面的代码中MyDialog extends JDialog.很明显,正在构建子对话框(并以某种方式向最终用户显示),然后当用户退出对话框时(通过单击OK或其他按钮),resultsbean将用于在事件总线上触发新事件.
但我正在努力解决两件事:
是否一个JDialog子项在JDialog创建时始终显示对话框,并且在退出对话框之前不会从构造函数返回?这是MyDialog上面的hte 构造函数的概要:
public class MyDialog extends JDialog {
private boolean isFizz;
private MyDialogResults results;
// Getters and setters for all properties...
public MyDialog(Frame parent, boolean isFizz) {
super(parent, "My Dialog", true);
setIsFizz(isFizz);
setVisible(true);
dispose();
}
}
Run Code Online (Sandbox Code Playgroud)
提前感谢任何帮助/洞察力,了解对话框如何打开,"挂起"(虽然我知道它实际上没有挂起/冻结),关闭,然后触发事件.