相关疑难解决方法(0)

System.exit的替代方案(1)

由于各种原因System.exit,在编写Java应用程序时,调用是不受欢迎的,那么如何通知调用进程并非所有内容都按计划进行?

编辑: 1表示standin任何非零退出代码.

java process

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

System.exit(num)或从main抛出RuntimeException?

我有一个单线程应用程序,如果出现问题,应将DOS错误级别设置为非零值.抛出RuntimeException或使用System.exit(非零)更好吗?我不需要堆栈跟踪,我不希望这个应用程序被扩展/重用.这两个选项有什么区别?

java exception-handling errorlevel

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

在java/swing中关闭窗口时采取的正确行动是什么?

我刚在CustomUIPanel类中编写了这个测试代码:

public static void main(String[] args) {
    final JDialog dialog = CustomUIPanel.createDialog(null, 
       CustomUIPanel.selectFile());
    dialog.addWindowListener(new WindowAdapter() {
        @Override public void windowClosing(WindowEvent e) {
            System.exit(0);
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

它是正确的,如果CustomUIPanel.main()是程序的入口点,但它让我想知道:如果另一个类要求CustomUIPanel.main()测试怎么办?然后我的电话System.exit(0)是不正确的.

如果没有顶级窗口,有没有办法告诉Swing事件调度线程自动退出?

如果不是,如果目标是让所有顶级窗口关闭时程序退出,那么JDialog/JFrame在关闭时做什么是正确的?

java swing dialog

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

如果显示器关闭,AWT/Swing是否取消绘画操作?

我遇到Swing问题,只有在计算机显示器电源关闭时才会出现,但我的Swing应用程序继续在后台运行.看起来每当显示器关闭时,Swing/AWT都会取消所有绘画操作,导致GUI中的一些显示问题在显示器重新打开后立即可见.

例如,当我使用自定义JNI函数关闭监视器并随后打开一个简单的消息对话框时,当监视器重新打开时,消息对话框为空:

空白消息对话框

但它在下次重绘后正确绘制:

正确绘制消息对话框

这是Swing的预期行为吗?有没有办法指示Swing即使显示器电源关闭也能继续绘制到屏幕上?

编辑:这是一个SSCCE:

package test;

import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;

public class App {
    public static void main(String[] args) throws Throwable {
        System.out.println("***** Please turn off the monitor in the next 70 seconds *****");
        Thread.sleep(1000L * 70);

        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                JOptionPane.showMessageDialog(null, "Test");
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

我使用的是64位Windows 7 Home Premium SP1和64位Java 1.6.0_24.

编辑2:这是另一个我体验"取消绘画操作"效果的程序:

package test;

import static com.mycompany.Util.turnOffMonitors;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel; …
Run Code Online (Sandbox Code Playgroud)

java swing awt repaint

11
推荐指数
1
解决办法
534
查看次数

在取消对话框时,关闭整个应用程序

我有一个JFrame,在实例化时调用自定义JDialog(登录).如果登录成功,我希望jFrame可见.如果用户在该登录对话框中按下escape/cancel,则应关闭整个应用程序.

我怎么能这样做......

目前,如果我处置对话框,则jFrame可见.

java swing jframe jdialog java-6

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

Swing:如何从控制器以编程方式关闭JDialog?

我已经通过bean绑定(Netbeans)将JDialog绑定到了我的(单独的)控制器类。我的对话框有一个“关闭”按钮。此按钮的action属性绑定到控制器中的一个动作。

对话:

public class AppVersionCheckDialog extends javax.swing.JDialog {
    ...
    binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, controller, org.jdesktop.beansbinding.ELProperty.create("${closeButtonActionListener}"), btnOk, org.jdesktop.beansbinding.BeanProperty.create("action"));
    bindingGroup.addBinding(binding);
    ...
}
Run Code Online (Sandbox Code Playgroud)

所以基本上我得到了

public class AppVersionCheckDialogController extends AbstractController {

    private final Action closeAction = new AbstractAction("Close") {
        @Override
        public void actionPerformed(ActionEvent e) {
            // dialog.dispose() - no reference of dialog instance here 
        }
    };


    public Action getCloseButtonActionListener(){
        return closeAction;
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的控制器中。

我对控制器内的对话框没有任何引用。我不想介绍一个,因为它打破了将事物绑定在一起的整个原理。

那么如何关闭对话框呢?有没有办法将对话框实例绑定到控制器的属性?如果是这样,怎么办?

java swing

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