デバッグのヘルプが必要です、コードはコンパイルされますが実行されません

user3390522

ねえ、私はこのプログラムのデバッグの助けを使うことができます。コードは私のものではありません。質問への回答からのものであり、試してみたかったのですが、NullPointerExceptionが発生し、問題がどこにあるのかわかりません。問題は画像パスにあると思いますが、よくわからないのでヘルプを利用できます。

import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.border.*;

public class CircleImages {

private int score = 0;
private JTextField scoreField = new JTextField(10);

public CircleImages() {
    scoreField.setEditable(false);

    final ImageIcon[] icons = createImageIcons();
    final JPanel iconPanel = createPanel(icons, 8);

    JPanel bottomLeftPanel = new JPanel(new FlowLayout(FlowLayout.LEADING));
    bottomLeftPanel.add(new JLabel("Score: "));
    bottomLeftPanel.add(scoreField);

    JPanel bottomRightPanel = new JPanel(new FlowLayout(FlowLayout.TRAILING));
    JButton newGame = new JButton("New Game");
    bottomRightPanel.add(newGame);
    JButton quit = new JButton("Quit");
    bottomRightPanel.add(quit);

    JPanel bottomPanel = new JPanel(new GridLayout(1, 2));
    bottomPanel.add(bottomLeftPanel);
    bottomPanel.add(bottomRightPanel);

    newGame.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e) {
            reset(iconPanel, icons);
            score = 0;
            scoreField.setText(String.valueOf(score));
        }
    });

    JFrame frame = new JFrame();
    frame.add(iconPanel);
    frame.add(bottomPanel, BorderLayout.PAGE_END);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);
}

private void reset(JPanel panel, ImageIcon[] icons) {
    Component[] comps = panel.getComponents();
    Random random = new Random();
    for(Component c : comps) {
        if (c instanceof JLabel) {
            JLabel button = (JLabel)c;
            int index = random.nextInt(icons.length);
            button.setIcon(icons[index]);
        }
    }
}

private JPanel createPanel(ImageIcon[] icons, int gridSize) {
    Random random = new Random();
    JPanel panel = new JPanel(new GridLayout(gridSize, gridSize));
    for (int i = 0; i < gridSize * gridSize; i++) {
        int index = random.nextInt(icons.length);
        JLabel label = new JLabel(icons[index]);
        label.addMouseListener(new MouseAdapter(){
            public void mouseClicked(MouseEvent e) {
                score += 1;
                scoreField.setText(String.valueOf(score));
            }
        });
        label.setBorder(new LineBorder(Color.GRAY, 2));
        panel.add(label);
    }
    return panel;
}

private ImageIcon[] createImageIcons() {
    String[] files = {"DarkGrayButton.png",
        "BlueButton.png",
        "GreenButton.png",
        "LightGrayButton.png",
        "OrangeButton.png",
        "RedButton.png",
        "YellowButton.png"
    };
    ImageIcon[] icons = new ImageIcon[files.length];
    for (int i = 0; i < files.length; i++) {
        icons[i] = new ImageIcon(getClass().getResource("/circleimages/" + files[i]));
    }
    return icons;
}

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

}

フローレントベイル

あなたの問題はここにあります:

icons[i] = new ImageIcon(getClass().getResource("/circleimages/" + files[i]));

あなたは、あなたのプロジェクトに必要なイメージを持っていないので、getClass().getResource()返されますnull、あなたが持っているだろうNullPointerExceptionのコンストラクタでImageIcon

あなたがしなければならないことはあなたのプロジェクトに次のファイルを置くことです:

  • /circleimages/DarkGrayButton.png
  • /circleimages/BlueButton.png
  • /circleimages/GreenButton.png
  • /circleimages/LightGrayButton.png
  • /circleimages/OrangeButton.png
  • /circleimages/RedButton.png
  • /circleimages/YellowButton.png

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

cコード:forループはgccでコンパイルされますが、実行されません

分類Dev

C ++-コードはデバッグでコンパイルされますが、リリースではコンパイルされません

分類Dev

パンダ: コードは単一の値に対して実行されますが、ループに対しては実行されません。Err: インデックスは単調増加または減少でなければなりません

分類Dev

cのmpiプログラムはコンパイルされますが、実行されません

分類Dev

私のCプログラムはコンパイルされますが、実行されません

分類Dev

C ++のデフォルトコンストラクターは実行時には使用されませんが、コンパイル時には必要です

分類Dev

アプリは実行されませんが、エラーなしでコンパイルされます

分類Dev

コマンドはコマンドラインで実行されますが、バッチファイルでは実行されません

分類Dev

C ++プログラムはコンパイルされ、コードブロックで実行されますが、ターミナルでコンパイルできません

分類Dev

Log4Netを備えたコンソールアプリはデバッグでコンパイルされますが、リリースモードではコンパイルされません

分類Dev

プログラムはコンパイル、実行されますが、DevC ++で終了しません

分類Dev

Javaプログラムは**実行**されますが、コンパイルされません

分類Dev

スクリプトのヘルプが必要で、コマンドラインで実行されますが、スクリプトでは実行されません

分類Dev

Clang ++はコンパイルされますが、実行されません

分類Dev

演算子のオーバーロードはVisualStudio 2013でコンパイルされますが、gccではコンパイルされません

分類Dev

スローされたfile.copy例外を実行すると、ファイルにアクセスできませんが使用されています。コードは、コンパイルされていないときにデバッグ時に機能します。

分類Dev

Webpack開発サーバーはホット時に再コンパイルされますが、バンドルは実際には変更されません

分類Dev

インターフェイスのデフォルトメソッドはコマンドプロンプトで実行されますが、Eclipseでは実行されません

分類Dev

プログラムはコンパイルおよび実行されますが、出力はありません

分類Dev

Cプログラムをコンパイルすると、コードブロックで「検索パスに実行可能なコンパイラが見つかりません(GNU GCCコンパイラ)」が表示されます。

分類Dev

wpfアプリケーションはデバッグモードで実行されますが、デバッグなしでは実行されません

分類Dev

Jenkinsパイプラインのシェルスクリプトを介してansibleプレイブックを実行すると、エコー出力がバッファリングされ、リアルタイムで表示されません

分類Dev

Bashコマンドはターミナルで実行されますが、スクリプトファイルでは実行されません

分類Dev

必要なヘッダーファイルがコメントアウトされているにもかかわらず、このC ++プログラムがコンパイルされて実行されるのはなぜですか?

分類Dev

コードはLinqPadで並行して実行されますが、コンソールアプリでは実行されません...なぜですか?

分類Dev

タートルコードは実行されますが、キャンバスには描画されません

分類Dev

Visual Studio Container Toolsでは、コンテナー化されたプロジェクトをビルド、デバッグ、または実行する前に、Dockerが実行されている必要があります。

分類Dev

メンバー関数テンプレートはclangではコンパイルされませんが、GCCではコンパイルされます

分類Dev

オブジェクトメソッドコールバックは、パラメーターとして渡された場合はイベントハンドラーでのバインディングを失いますが、ハードコーディングされた場合は失われません。

Related 関連記事

  1. 1

    cコード:forループはgccでコンパイルされますが、実行されません

  2. 2

    C ++-コードはデバッグでコンパイルされますが、リリースではコンパイルされません

  3. 3

    パンダ: コードは単一の値に対して実行されますが、ループに対しては実行されません。Err: インデックスは単調増加または減少でなければなりません

  4. 4

    cのmpiプログラムはコンパイルされますが、実行されません

  5. 5

    私のCプログラムはコンパイルされますが、実行されません

  6. 6

    C ++のデフォルトコンストラクターは実行時には使用されませんが、コンパイル時には必要です

  7. 7

    アプリは実行されませんが、エラーなしでコンパイルされます

  8. 8

    コマンドはコマンドラインで実行されますが、バッチファイルでは実行されません

  9. 9

    C ++プログラムはコンパイルされ、コードブロックで実行されますが、ターミナルでコンパイルできません

  10. 10

    Log4Netを備えたコンソールアプリはデバッグでコンパイルされますが、リリースモードではコンパイルされません

  11. 11

    プログラムはコンパイル、実行されますが、DevC ++で終了しません

  12. 12

    Javaプログラムは**実行**されますが、コンパイルされません

  13. 13

    スクリプトのヘルプが必要で、コマンドラインで実行されますが、スクリプトでは実行されません

  14. 14

    Clang ++はコンパイルされますが、実行されません

  15. 15

    演算子のオーバーロードはVisualStudio 2013でコンパイルされますが、gccではコンパイルされません

  16. 16

    スローされたfile.copy例外を実行すると、ファイルにアクセスできませんが使用されています。コードは、コンパイルされていないときにデバッグ時に機能します。

  17. 17

    Webpack開発サーバーはホット時に再コンパイルされますが、バンドルは実際には変更されません

  18. 18

    インターフェイスのデフォルトメソッドはコマンドプロンプトで実行されますが、Eclipseでは実行されません

  19. 19

    プログラムはコンパイルおよび実行されますが、出力はありません

  20. 20

    Cプログラムをコンパイルすると、コードブロックで「検索パスに実行可能なコンパイラが見つかりません(GNU GCCコンパイラ)」が表示されます。

  21. 21

    wpfアプリケーションはデバッグモードで実行されますが、デバッグなしでは実行されません

  22. 22

    Jenkinsパイプラインのシェルスクリプトを介してansibleプレイブックを実行すると、エコー出力がバッファリングされ、リアルタイムで表示されません

  23. 23

    Bashコマンドはターミナルで実行されますが、スクリプトファイルでは実行されません

  24. 24

    必要なヘッダーファイルがコメントアウトされているにもかかわらず、このC ++プログラムがコンパイルされて実行されるのはなぜですか?

  25. 25

    コードはLinqPadで並行して実行されますが、コンソールアプリでは実行されません...なぜですか?

  26. 26

    タートルコードは実行されますが、キャンバスには描画されません

  27. 27

    Visual Studio Container Toolsでは、コンテナー化されたプロジェクトをビルド、デバッグ、または実行する前に、Dockerが実行されている必要があります。

  28. 28

    メンバー関数テンプレートはclangではコンパイルされませんが、GCCではコンパイルされます

  29. 29

    オブジェクトメソッドコールバックは、パラメーターとして渡された場合はイベントハンドラーでのバインディングを失いますが、ハードコーディングされた場合は失われません。

ホットタグ

アーカイブ