【问题标题】:How to open another program with for statements java?如何用for语句打开另一个程序java?
【发布时间】:2017-03-03 23:56:16
【问题描述】:

我对 java 很陌生,我一直在做一些基本的事情,对于我的最终项目,我们想创建一个 gui rpg。我们现在的问题是我们不知道如何通过单击 gui 按钮打开另一个程序。我的朋友告诉我你们使用 eclipse,所以我不必显示导入。请记住,我在高中,所以不要判断太苛刻 :D 这是我们的代码:

public class Narnia {

    private static final String BACKHGROUND_IMAGE_URL = "http://randomwallpapers.net/fantasy-castle-1920x1080-wallpaper328374.jpg";

    protected void initUI() throws MalformedURLException {
        JFrame frame = new JFrame(Narnia.class.getSimpleName());
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        final ImageIcon backgroundImage = new ImageIcon(new URL(BACKHGROUND_IMAGE_URL));

        JLabel mainPanel = new JLabel(backgroundImage) {
            @Override
            public Dimension getPreferredSize() {
                Dimension size = super.getPreferredSize();
                Dimension lmPrefSize = getLayout().preferredLayoutSize(this);
                size.width = Math.max(size.width, lmPrefSize.width);
                size.height = Math.max(size.height, lmPrefSize.height);
                return size;
            }
        };

        mainPanel.setLayout(new GridBagLayout());
        GridBagConstraints gbc = new GridBagConstraints();
        gbc.insets = new Insets(10, 10, 10, 10);
        gbc.weightx = 1.0;
        gbc.anchor = GridBagConstraints.WEST;
        gbc.gridwidth = GridBagConstraints.REMAINDER;
        for (int i = 0; i < 1; i++) {
            mainPanel.add(new JButton("Play" + ("")), gbc);
        }
        for (int i = 0; i < 1; i++) {
            mainPanel.add(new JButton("Credits " + ("")), gbc);
        }
        for (int i = 0; i < 1; i++) {
            mainPanel.add(new JButton("Exit " + ("")), gbc);
        }

        // Let's put a filler bottom component that will push the rest to the top
        gbc.weighty = 1.0;
        mainPanel.add(Box.createGlue(), gbc);
        frame.add(mainPanel);
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                try {
                    new Narnia().initUI();
                    } catch (MalformedURLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        });
    }
}

这是我们要开的类:

public class chooseaclass {

    private static final String BACKHGROUND_IMAGE_URL = "http://randomwallpapers.net/fantasy-castle-1920x1080-wallpaper328374.jpg";

    protected void initUI() throws MalformedURLException {
        JFrame frame = new JFrame(chooseaclass.class.getSimpleName());
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        final ImageIcon backgroundImage = new ImageIcon(new URL(BACKHGROUND_IMAGE_URL));

        JLabel mainPanel = new JLabel(backgroundImage) {
            @Override
            public Dimension getPreferredSize() {
                Dimension size = super.getPreferredSize();
                Dimension lmPrefSize = getLayout().preferredLayoutSize(this);
                size.width = Math.max(size.width, lmPrefSize.width);
                size.height = Math.max(size.height, lmPrefSize.height);
                return size;
            }
        };

        mainPanel.setLayout(new GridBagLayout());
        GridBagConstraints gbc = new GridBagConstraints();
        gbc.insets = new Insets(40, 40, 40, 40);
        gbc.weightx = 1.0;
        gbc.anchor = GridBagConstraints.CENTER;
        gbc.gridwidth = GridBagConstraints.REMAINDER;
        for (int i = 0; i < 1; i++) {
            mainPanel.add(new JButton("Archer" + ("")), gbc);
        }
        for (int i = 0; i < 1; i++) {
            mainPanel.add(new JButton("Mage " + ("")), gbc);
        }
        for (int i = 0; i < 1; i++) {
            mainPanel.add(new JButton("Knight " + ("")), gbc);
        }

        // Let's put a filler bottom component that will push the rest to the top
        gbc.weighty = 1.0;
        mainPanel.add(Box.createGlue(), gbc);
        frame.add(mainPanel);
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                try {
                    new chooseaclass().initUI();
                    } catch (MalformedURLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        });
    }
}

【问题讨论】:

标签: java image swing user-interface button


【解决方案1】:

你需要为你想要的任何按钮添加一个监听器。在这种情况下,我们将使用ActionListener

让我们使用您已有的现有行:mainPanel.add(new JButton("Play" + ("")), gbc);

首先,为了简单起见,我们将JButton 放在一个变量中: JButton playButton = new JButton("Play" + (""));

要添加监听器,我们需要使用方法addActionListener()

现在添加一个ActionListener 作为匿名类,这样我们就可以实现系统可以在后台调用的方法:

JButton playButton = new JButton("Play" + (""));
    playButton.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent arg0) {
            new chooseaclass.initUI() //insantiate a new chooseaclass instance

        }

    });
    mainPanel.add(playButton, gbc);

actionPerformed() 方法中,我实例化了一个chooseaclass。你可以从那里做任何你想做的事情。

我在没有编辑器的情况下即兴编写了这段代码,因此它可能包含语法错误。

【讨论】:

  • 此外,如果您使用 WindowBuilder 插件,addActionListener() 将自动添加,将按钮放在查看器上,然后双击您刚刚放下的按钮。它会将您跳转到代码中创建动作侦听器的位置
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-12
  • 1970-01-01
  • 2014-09-07
  • 1970-01-01
  • 2020-12-15
  • 2018-04-27
相关资源
最近更新 更多