1

私は大学生ですが、JavaでGUIを作成するのはこれが初めてです。今、私はSwingを使用してJavaでこの回答GUIを確認し、指示に従いましたが、それでも何も起こりません。これがコードです。関係のないジャンクをすべて切り取りました。

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Lab4Shell 
{
    // this holds the current game board
        private char[][] gameBoard = new char[7][8];
        private JButton[][] gameButtons = new JButton[7][8];

        private ImageIcon red = new ImageIcon("Red.jpg");
        private ImageIcon black = new ImageIcon("Black.jpg");
        private ImageIcon empty = new ImageIcon("Empty.jpg");

        private JPanel panel = new JPanel();

        private int currentPlayer = 1;
        private int numMoves = 0;
        //Why do you want everything in constructor?
        public Lab4Shell()
        {
            CreateWindow();
            ResetGame();



            // set layout
            // loop through buttons array creating buttons, registering event handlers and adding buttons to panel
            // add panel to frame
            // do other initialization of applet
        }

        public static void CreateWindow()
        {
            //Sets window title and create window object.
            JFrame aWindow = new JFrame("Connect Four");
            //Set window position and size
            aWindow.setBounds(500,100,400,400);
            //What close button does.
            aWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            //Make window visible.
            aWindow.setVisible(true);


        }

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

                    Lab4Shell game = new Lab4Shell();

                }
            });


        }
void ResetGame()
        {



            JLabel label = new JLabel();
            label.setIcon(empty);
            for(int r=0;r<gameBoard.length;r++)
            {
                java.util.Arrays.fill(gameBoard[r],0,gameBoard[r].length,'0');



                //loop through board columns
                for(int c=0;c<gameBoard[r].length;c++)
                {

                }

            }
            // loop through array setting char array back to ' ' and buttons array back to empty pic
            // reset currentPlayer and numMoves variables
        }
4

4 に答える 4

2

あなたはこれを試すことができます

BufferedImage myPicture = ImageIO.read(new File("path-to-file"));
JLabel picLabel = new JLabel(new ImageIcon( myPicture ));
add( picLabel );
于 2012-10-24T01:08:16.780 に答える
2

Manosが言ったように、作成したImageIconsをパネルに追加する必要があり、Eclipseプロジェクトのsrcフォルダーにある画像であるため、次のようにします。

java.net.URL url = getClass().getResource("red.JPEG");
ImageIcon red = new ImageIcon(url);
于 2012-10-24T01:31:12.197 に答える
2

Class#getResourceリソースがアプリケーションに埋め込まれている場合(jar内)、それらをロードするために使用する必要があります。

画像を読み込むための推奨されるメカニズムは、ImageIOAPIを使用することです。readより多くの画像形式をサポートし(プラグイン可能なアーキテクチャを提供します)、メソッドが戻ったらすぐに表示できる画像を保証します

BufferedImage redImage;

// ... 

URL url = getClass().getResource("red.JPEG");
if (url != null) {
    redImage = ImageIO.read(url);
} else {
    throw new NullPointerException("Unable to locate red image resource");
}
于 2012-10-24T01:39:06.050 に答える
1

フレームに何も追加したことがないため、問題が発生しています。したがって、createWindowメソッドでは、次を呼び出す必要があります。

aWindow.setContentPane(panel);

その後、(メソッドのように)後で、コンテンツ(のように)をパネルにresetGame追加します。JLabel

panel.add(empty);

それがパネルに追加される場所は、パネルのLayoutManagerによって決定されます(それらの多くがあります-デフォルトはですBorderLayout

その他の役立つもの:

  • 一般に、意味がある場合は、コンストラクターでオブジェクトを作成/初期化し、ランタイムでオブジェクトを追加/削除/更新します。
  • トラブルシューティングには、見たいものの.setOpaque(true)とメソッドを使用します。.setBackground(Color.blue)表示されない場合は、何かがそれを覆っている、または追加されていないかのいずれかです。

幸運を。

于 2012-10-24T04:36:04.680 に答える