从同一个java(eclipse)项目中运行不同的类

时间:2014-08-20 14:45:38

标签: java

这个"程序"或者" app"我写作是我想要做的事情来证明自己我可以学习java,它不是一个严肃的游戏,它只是一个让我自己看的游戏,看我是否能做正确的事情。

这是我目前的代码

//*Importación del botón
import javax.swing.JButton;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
//*Set de importación para sonido
import java.io.File;
import java.io.IOException;

import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException; //Fin del set de sonido
import javax.swing.JFrame; //*Importando la ventana
import javax.swing.JLabel; //*Texto en la ventana
import javax.swing.JPanel;
import javax.swing.SwingConstants; //*Swing para alinear texto


//*Comienza el juego
public class Principal {    
public static void main(String args[]) {

//*Script original  (Añadido final para cerrarlo)
final JFrame vprincipal = new JFrame ();
JLabel texto = new JLabel("Bienvenida",SwingConstants.CENTER);

//*Añadiendo el JPanel no original
JPanel contenedor = new JPanel();
contenedor.setOpaque(true);
contenedor.setBackground(Color.WHITE);
contenedor.setLayout(null);

//*Script original
texto.setText("Bienvenidos a la versión alfa 0.1 de Mazmorra de Puertas");
texto.setLocation(500,500);
vprincipal.add(texto);
String nombre = "Mazmorra de Puertas";
vprincipal.setTitle(nombre);
vprincipal.setSize(400, 200);
vprincipal.setVisible(true);
vprincipal.setDefaultCloseOperation
(JFrame.EXIT_ON_CLOSE);
vprincipal.setVisible(true);
vprincipal.setLocation(750,350);
vprincipal.setLayout(new BorderLayout());

contenedor.add(texto);

//*Añadiendo botón
final JButton empezar = new JButton("Empezar");
vprincipal.setContentPane(contenedor);
contenedor.add(empezar);
empezar.setSize(100, 20);
empezar.setLocation(140, 130);

//*Comienzo del juego
final JFrame comienzo = new JFrame();
String nombre2 = "Version a0.1";
comienzo.setTitle(nombre2);
comienzo.setSize(400, 200);
comienzo.setVisible(false);
comienzo.setDefaultCloseOperation
(JFrame.EXIT_ON_CLOSE);
comienzo.setVisible(false);
comienzo.setLocation(750,350);
comienzo.setLayout(new BorderLayout());


//*Añadiendo acciones al botón
empezar.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e)
    {

        vprincipal.dispose();
        comienzo.setVisible(false);





    }
});


//*Aquí se añade el sonido
try {
    AudioInputStream audio = AudioSystem.getAudioInputStream(new File("Intro.wav"));
    final Clip clip = AudioSystem.getClip();
    clip.open(audio);
    clip.start();

    empezar.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e)
        {
            clip.stop();
        }

});
}

catch(UnsupportedAudioFileException uae) {
    System.out.println(uae);
}
catch(IOException ioe) {
    System.out.println(ioe);
}
catch(LineUnavailableException lua) {
    System.out.println(lua);
}

}

{
}
}

我想在这段代码之后访问GuessingGame(我正在阅读的一本学习java书中的一个例子):

//*Añadiendo acciones al botón
empezar.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e)
    {
        vprincipal.dispose();
        comienzo.setVisible(false);

我尝试过使用新的nameofclass();以及我需要花费很长时间才能写下我尝试过的所有尝试。

我试图从班级Principal打电话到班级GuessingGame。当我按下名为empezar的按钮?

时怎么做

1 个答案:

答案 0 :(得分:0)

如果我理解正确,你想从另一个Java类(代表一些游戏)运行方法main。嗯,你可以通过调用:

来做到这一点
AnotherClass.main({});

假设AnotherClass是您要运行的游戏类。

您还可以使用ProcessBuilder API

在单独的流程中运行另一个类
// method to start class in another JVM process
public static void startProcess(Class<?> clazz) throws Exception {
    System.out.println(clazz.getCanonicalName());
    String separator = System.getProperty("file.separator");
    String classpath = System.getProperty("java.class.path");
    String path = System.getProperty("java.home") + separator + "bin" + separator + "java";
    ProcessBuilder processBuilder = new ProcessBuilder(path, "-cp", classpath, clazz.getCanonicalName());
    Process process = processBuilder.start();
    process.waitFor();
}

// run in another process
startProcess(AnotherClass.class);