2016-08-26 7 views
-3

別のクラスファイルからランダムな画像をロードしようとしています。個別のJavaファイルから画像を表示

import java.util.*; 
import java.io.*; 
public class random { 
    static String back01; 

    public static void ran(int number) { 
     switch(number) { 
      case 1: 
       setImage("images/01.jpg"); 
       break; 
      case 2: 
       setImage("images/02.jpg"); 
       break; 
      case 3: 
       setImage("images/03.jpg"); 
       break; 
      case 4: 
       setImage("images/04.jpg"); 
       break; 
      case 5: 
       setImage("images/05.jpg"); 
       break; 
      case 6: 
       setImage("images/06.jpg"); 
       break; 
      case 7: 
       setImage("images/07.jpg"); 
       break; 
      case 8: 
       setImage("images/08.jpg"); 
       break; 
      case 9: 
       setImage("images/09.jpg"); 
       break; 
      case 10: 
       setImage("images/10.jpg"); 
       break; 
      default: 
       System.out.println("Invalid number"); 
     } 
    } 

    public static void setImage(String back01) { 
     String image = back01; 
    } 

    public static int getImage() { 
     String test; 
     String set = setImage(test); 
     return set; 
    } 
} 

私はコンパイル時に互換性のないタイプのエラーを取得しておくん何でも、私のメインクラスに関数を呼び出す方法で立ち往生しています。私が持っているコードをバックアップしてusbにアクセスするまで家に帰るまでは、この実行に関連するコードブロックを掲示します。

int number = rand.nextInt(10) + 1; 
random.ran(number); 

私は、それは誤りを通じて、私はここでその関数 に空隙を持たなかったことを言ってしまう

.getResource(random.getImage()); 

を使用してイメージアイコンにそれを入れてみました最後に、私の主な機能であります私のコードにアクセスできます。

/** 
* Write a description of class main here. 
* 
* @author (your name) 
* @version (a version number or a date) 
*/ 

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.io.*; 
import sun.audio.*; 
import java.util.*; 
public class test 
{ 
    private static final int WIDTH = 800; 
    private static final int HEIGHT = 600; 

JButton start, exit; 

static String back, back01; 

Random rand = new Random(); 

private ExitButtonHandler ebHandler; 
//private StartButtonHandler sbHandler; 
public test() 
{ 
    int test = rand.nextInt(10) + 1; 

    random.ran(test); 

    /*switch(rand_background) 
    { 
     case 1: 
      back = "images/01.jpg"; 
      break; 
     case 2: 
      back = "images/02.jpg"; 
      break; 
     case 3: 
      back = "images/03.jpg"; 
      break; 
     case 4: 
      back = "images/04.jpg"; 
      break; 
     case 5: 
      back = "images/05.jpg"; 
      break; 
     case 6: 
      back = "images/06.jpg"; 
      break; 
     case 7: 
      back = "images/07.jpg"; 
      break; 
     case 8: 
      back = "images/08.jpg"; 
      break; 
     case 9: 
      back = "images/09.jpg"; 
      break; 
     case 10: 
      back = "images/10.jpg"; 
      break; 
     default: 
      System.out.println("Invalid number"); 
    } 

    int rand_background01 = rand.nextInt(10) + 1;*/ 



    JFrame frame = new JFrame("Until the End: The Fallen Souls"); 
    //sound.music("music/theme01.wav"); 

    String testing = random.getImage() + ""; 

    ImageIcon image = new ImageIcon(getClass().getResource(random.getImage())); 

    //ImageIcon image01 = new ImageIcon(getClass().getResource(back01)); 

    start = new JButton("Start game..."); 
    exit = new JButton("Exit game..."); 

    JLabel background = new JLabel(); 
    background.setIcon(image); 
    background.setLayout(new BorderLayout()); 

    JLabel background01 = new JLabel(); 
    //background01.setIcon(image01); 
    //background01.setLayout(new BorderLayout()); 

    JPanel panel = new JPanel(); 

    panel.add(background); 
    //panel.add(background01); 

    panel.setLayout(new GridBagLayout()); 

    panel.setOpaque(false); 

    ebHandler = new ExitButtonHandler(); 

    exit.addActionListener(ebHandler); 

    panel.add(start); 
    panel.add(Box.createRigidArea(new Dimension(150, 0))); 
    panel.add(exit); 


    frame.add(panel); 

    frame.setExtendedState(JFrame.MAXIMIZED_BOTH); 

    frame.setUndecorated(true); 
    frame.setVisible(true); 
} 

public class ExitButtonHandler implements ActionListener 
{ 
    public void actionPerformed(ActionEvent e) 
    { 
     System.exit(0); 
    } 
} 

public static void main(String args[]) 
{ 
    test menu = new test(); 

} 
} 

このコードでは、今のところ背景を変更して非常に基本的な手続き型の生成を試みています。私が進むにつれて、もっと複雑になりますが、今のところ、まだタイルが作成されていないので、実験することができるまで、コードをもっと深く理解することはできません。

EDIT:

私はそれが仕事を得るために管理し、私は私のsetImageメソッドを削除する必要がありました。これをこれに組み込む方法はありますか?それは私が使用しようとすると、この

/** 
* Write a description of class random here. 
* 
* @author (your name) 
* @version (a version number or a date) 
*/ 
import java.util.*; 
import java.io.*; 
public class random 
{ 
public static String back01; 
public static void ran(int number) 
{ 
    switch(number) 
    { 
     case 1: 
      back01 = "images/01.jpg"; 
      break; 
     case 2: 
      back01 = "images/02.jpg"; 
      break; 
     case 3: 
      back01 = "images/03.jpg"; 
      break; 
     case 4: 
      back01 = "images/04.jpg"; 
      break; 
     case 5: 
      back01 = "images/05.jpg"; 
      break; 
     case 6: 
      back01 = "images/06.jpg"; 
      break; 
     case 7: 
      back01 = "images/07.jpg"; 
      break; 
     case 8: 
      back01 = "images/08.jpg"; 
      break; 
     case 9: 
      back01 = "images/09.jpg"; 
      break; 
     case 10: 
      back01 = "images/10.jpg"; 
      break; 
     default: 
      System.out.println("Invalid number"); 
    } 
} 

public static void setImage(String back01) 
{ 
    back01 = random.back01; 
} 

public static String getImage() 
{ 
    return random.back01; 
} 
} 

よりも、私のコードでかなり良く見えたのSystem.out.println(random.getImage())私はとback01

の前でランダムずにヌルになるだろう

EDIT/SOLVED:

私はそれを理解しました。ご指導いただきありがとうございます。ここでは、setImage関数を修正した方法を示します。

/** 
* Write a description of class random here. 
* 
* @author (your name) 
* @version (a version number or a date) 
*/ 
import java.util.*; 
import java.io.*; 
public class random 
{ 
public static String back01; 
public static String test; 
public static void ran(int number) 
{ 
    switch(number) 
    { 
     case 1: 
      setImage("images/01.jpg"); 
      break; 
     case 2: 
      setImage("images/02.jpg"); 
      break; 
     case 3: 
      setImage("images/03.jpg"); 
      break; 
     case 4: 
      setImage("images/04.jpg"); 
      break; 
     case 5: 
      setImage("images/05.jpg"); 
      break; 
     case 6: 
      setImage("images/06.jpg"); 
      break; 
     case 7: 
      setImage("images/07.jpg"); 
      break; 
     case 8: 
      setImage("images/08.jpg"); 
      break; 
     case 9: 
      setImage("images/09.jpg"); 
      break; 
     case 10: 
      setImage("images/10.jpg"); 
      break; 
     default: 
      System.out.println("Invalid number"); 
    } 
} 

public static void setImage(String back01) 
{ 
    test = back01; 
} 

public static String getImage() 
{ 
    return test; 
} 
} 
+0

してください[編集]あなたの質問をし、あなたのメインクラスのコードを追加します。 Javaの命名規則に従い、クラス名の最初の文字を大文字にしてください。 'Random'の名前を' RandomImage'のように変更したいかもしれませんが、既にJavaが 'java.math.Random'クラスに組み込まれています。 –

+0

私はクラスが終了する前に3分以内に動作させるためにランダムなものをテストしていました。メインの投稿を編集して、私が家に帰るときに私の主な機能を含めます。私は実際のプログラムに入れたら、すべての名前を変更します。実際のプログラムに入れる前に、実験コードとアイデアをテストする別のプログラムを作成しました。私はそれがスイッチのステートメントにあったときに私の主な機能にあったが、反復が好きではなかったので、それを扱う新しいクラスを望んでいた – feare56

答えて

0

あなたはこのようなものが必要です:

import java.util.*; 
import java.io.*; 
public class Random 
{ 
    private String back01; 

    public static void ran(int number) { 
     switch(number) { 
      //All options 
     } 
    } 

    //If you only use "setImage()" in the class is not necessary 
    //declare this one as "public static" 
    //public static void setImage(String back01) { 
    private void setImage(String back01) { 
     this.back01 = back01; 
    } 

    public static String getImage() { 
     return back01; 
    } 
} 

そして、それを証明するために:

int number = rand.nextInt(10) + 1; 
random.ran(number); 
.getResource(random.getImage()); 
+0

申し訳ありませんが、最後にあなたのコードを試しました。私がそれをコンパイルしようとすると、私はpublic static voidでエラーが発生しました。「static以外のメソッドsetImage(java.lang.String)は静的コンテキストから参照できません。その他のコードはすべて動作するようです。メインファイルからコンパイルしようとすると、このエラーに戻ります – feare56

+0

文字列とすべてのメソッドをpublic staticにコンパイルして、 "this.back01 = back01"で "this"を削除しました。今、メインファイルのJava.lang.NullPointerExceptionにエラーが発生しました:random.getImage()を呼び出すとnull(sun.misc.MetaIndex) – feare56

0

メソッドのシグネチャで戻り値の型がintになったときに、メソッドがStringを返すのはなぜですか?

public static int getImage() { 
     String test; 
     String set = setImage(test); 
     return set; 
    } 
関連する問題