使用"打开"时,如何将文件路径传递给命令行参数?在Windows?

时间:2015-09-20 22:29:16

标签: java eclipse launch4j

我是新来的,所以我不确定我做错了所以请告诉我,不管我是谁。

我用Java制作一个简单的图像/ gif查看器。我希望能够使用提取的应用程序(我将使用launch4j包装在.exe中)来打开图像文件。当选择要用它打开的图像时,我希望它获取图像的文件路径并将其传递给args [0],以便应用程序可以使用它。

我感觉这是需要在我的Java代码之外完成的事情。也许在安装程序或我使用的包装中,但我不知道该怎么做。

我在过去的3个小时里一直在搜索无济于事。任何帮助表示赞赏。到目前为止我的代码:

public class MainWindow {

private JFrame frame1;
public static String imageLocation = null;

public static void main(String[] args) {
        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } catch (Throwable e) {
            e.printStackTrace();
        }

        try {
            imageLocation = args[0];
        } catch (Exception e1) {
            e1.printStackTrace();
            System.exit(0);
        }

        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    MainWindow window = new MainWindow();
                    window.frame1.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    public MainWindow() {
        initialize();
    }

    private void initialize() {

        BufferedImage img = null;
        try{
            img = ImageIO.read(new File(imageLocation));
        }catch (IOException e) {
            e.printStackTrace();
        }
        int imgWidth = img.getWidth();
        int imgHeight = img.getHeight();

        frame1 = new JFrame();
        frame1.getContentPane().setBackground(Color.WHITE);
        frame1.setResizable(false);
        frame1.setTitle(imageLocation);
        frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame1.getContentPane().setLayout(new BorderLayout(0, 0));
        frame1.setBounds(200, 200, imgWidth+18, imgHeight+40);

        JLabel imgLabel = new JLabel("");
        imgLabel.setToolTipText(imageLocation);
        imgLabel.setHorizontalAlignment(SwingConstants.CENTER);
        imgLabel.setIcon(new ImageIcon(imageLocation));
        imgLabel.setBounds(0, 0, frame1.getWidth(), frame1.getWidth());
        frame1.getContentPane().add(imgLabel);
    }
}

提前致谢。

1 个答案:

答案 0 :(得分:0)

我没有看到任何表单元素上传文件。不是JForms的专家,但我相信您需要一个文件上传控件,将其值传递给代码中的args数组。