1

私はJavaを初めて使用します。

私の問題は、JavaプログラムがJButtonとして使用しようとしている画像ファイルを見つけられないことです。(現在、このコードは何もしません。最初に望ましい外観を取得しているだけだからです)。 これは私のメインクラスです

コード:

package mainClasses;
/*
 * Frame Info and all that shit,
 * mainFrame is the actual frame itself
 * it will refer to MainC.java a lot Main class = Main Class
 */
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.io.File;

import resources.ResourcesManager; 

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;


@SuppressWarnings({ "unused", "serial" })
public class mainFrame extends JFrame {

ResourcesManager rManager = new ResourcesManager();


public mainFrame() {
    JButton playButton = new JButton(rManager.pButton);
    JButton infoButton = new JButton();
    JButton exitButton = new JButton();


    int x = 310, y = 300;
    setSize(x, y);
    setVisible(true);
    setLayout(null);
    setTitle("Kingdom Raider");
    setDefaultCloseOperation(EXIT_ON_CLOSE);

    /*Buttons and Properties*/
                        /*X,  Y,  X, Y*/
     playButton.setBounds(10, 10, 70, 40);
    /* Add if problem cannot be sorted */ // playButton.setText("Play");



    add(playButton);

     infoButton.setBounds(90, 10, 110, 40);
     infoButton.setText("Information");
    add(infoButton);

     exitButton.setBounds(210, 10, 70, 40);
     exitButton.setText("Exit");
    add(exitButton);

    //This is for checking if the file is here.
    File imageCheck = new File("/JavaGame/src/resources/playButton.png");

    if(imageCheck.exists())
    {
        System.out.println("File found!");
    }
    else 
    {
        System.out.println("File not found!");
    }

    repaint();



}









public void Painting (Graphics g) {


}
}

これは私のRESOURCESMANAGER.JAVAです

package resources;

import java.awt.Image;

import javax.swing.ImageIcon;
import javax.swing.JLabel;

public class ResourcesManager {

/*Here, your going to want to declare anything
 * needed.
 */

public ImageIcon KRLogo = new ImageIcon("/JavaGame/src/resources/kingdomraiderlogo.png");
public ImageIcon pButton = new ImageIcon("/JavaGame/src/resources/playButton.png");

public void settings() { //Set the stuff settings, locations e.t.c.
    //BLAH

}

}

したがって、基本的にボタンにはResourcesManagerのpButtonが必要です。

これは、ResourcesManager.javaと同じフォルダーであるresourcesパッケージにある実際にはplayButton.pngです。

ディレクトリの問題について教えてください。

編集:申し訳ありませんが、エラーはありません。私の画像なしで空白のボタンが表示されます。

私のディレクトリは

src

mainClasses (package)
   mainFrame.java
   runClass.java
resources (package)
   kingdomraiderlogo.png
   playButton.png (image wanted at the momment.)
   ResourcesManager.java

+1します

4

2 に答える 2

2

次のようにします。

public ImageIcon KRLogo = new ImageIcon(Toolkit.getDefaultToolkit().getImage(
(ResourcesManager.class.getResource("/resources/kingdomraiderlogo.png"))));

public ImageIcon pButton = new ImageIcon(Toolkit.getDefaultToolkit().getImage(
(ResourcesManager.class.getResource("/resources/playButton.png"))));

編集:

Java では、ファイルにアクセスする方法が 2 つあります。getResource()1 つの方法は、通常、クラスのメソッドで使用されるスラッシュを使用するパスを使用することClassです。最初のスラッシュは、プロジェクトの src フォルダーを参照します。

2 番目の方法は、たとえばpathname、クラスのコンストラクターで使用されます。FileWindows では、バックスラッシュをエスケープする必要があるため、バックスラッシュを 2 つ使用します。File.Separator問題は、パス名文字列で使用することで簡単に回復できるプラットフォーム非依存性です。

于 2012-04-25T15:54:30.370 に答える
0

パスを絶対パス (先頭の /) として定義しています。それは相対パスであるはずですか、それともルートドライブから JavaGame/src/resources/... フォルダーを本当に持っていますか?

于 2012-04-25T15:39:41.940 に答える