java - JFrame性能低下

标签 java jframe bufferedimage joptionpane awtrobot

JOptionPane.ShowInputDialog 缓慢地接受输入。用户按键操作与反射(reflect)到文本框之间有半秒的间隙。

此外,应用程序(.jar 文件)占用更多内存,大约。 75mb(应用程序使用 JNA Windows 低级 Keyhook 事件)。

如何优化!

Robot robot = new Robot();
BufferedImage bi=robot.createScreenCapture(new Rectangle(0,25,1366,744));
JFrame frame = new JFrame();
frame.toFront();
frame.requestFocus();
frame.setAlwaysOnTop(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
String name = JOptionPane.showInputDialog(frame, "Enter file name");
frame.dispose();
String fileName= dovalidateFile(name);
FileNameExtensionFilter filter = new FileNameExtensionFilter("PNG", ".png");
fileChooser.setFileFilter(filter);
fileChooser.setSelectedFile(new File (fileName));
int returnVal = fileChooser.showSaveDialog(null);
if ( returnVal == JFileChooser.APPROVE_OPTION )
{
    File file = fileChooser.getSelectedFile();
    file = validateFile(file);
    System.out.println(file);
    ImageIO.write(bi, "png", file);
}

最佳答案

new Thread(){
    public void run(){
        Robot robot = new Robot();
        BufferedImage bi=robot.createScreenCapture(new Rectangle(0,25,1366,744));
        JFrame frame = new JFrame();
        frame.toFront();
        frame.requestFocus();
        frame.setAlwaysOnTop(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        String name = JOptionPane.showInputDialog(frame, "Enter file name");
        frame.dispose();
        String fileName= dovalidateFile(name);
        FileNameExtensionFilter filter = new FileNameExtensionFilter("PNG", ".png");
        fileChooser.setFileFilter(filter);
        fileChooser.setSelectedFile(new File (fileName));
        int returnVal = fileChooser.showSaveDialog(null);
        if ( returnVal == JFileChooser.APPROVE_OPTION )
        {
            File file = fileChooser.getSelectedFile();
            final File validatedFile = validateFile(file);
            System.out.println(file);
            try{
                ImageIO.write(bi, "png", validatedFile);
            }catch(Excepion e){
                e.printStackTrace();
            }

        }
    }
}.start();

关于java - JFrame性能低下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35253481/

相关文章:

java - OpenCV 应用程序 - Android 相机一直显示黑屏

java.net.SocketException : Broken pipe with Quartz and MySQL and Tomcat (Tomcat Crash) 异常

Java - 从 JMenuItem 设置 JFrame 不透明度

java - 按钮多次打开新的 JFrame。我该如何阻止呢?

java - 创建基本绘图程序

java - 重新绘制一个 argb BufferedImage

Java GUI 图像大小

java - 单击 GUI 时数组会丢失数据

java - (Java) 为什么我的 JFrame y 坐标偏离 22 点?

java - 在 Swing 中的 BufferedImage 中绘画