1

Java でゲームをコーディングしようとしているので、助けが必要です。JFrame に文字列を描画しないことがわかったとき、私は足を止めました。これを回避する方法をいくつか試し、多くの調査を行いましたが、何も見つかりませんでした。これはコードです: - オレゴン (メイン クラス):

package com.lojana.oregon.client;

import java.awt.*;

import javax.swing.*;

import com.lojana.oregon.src.Desktop;
import com.lojana.oregon.src.Keyboard;
import com.lojana.oregon.src.Mouse;
import com.lojana.oregon.src.Paint;

public class Oregon extends JFrame {
    private static final long serialVersionUID = 1L;

    // Currently unused but there will be a use for it in the future
    public Desktop desktop;

    public String TITLE = "Oregon";

    public Oregon() {
        /* Window code */
        setTitle(TITLE);
        setSize(640, 640);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);

        /* Extra code for Window */
        addKeyListener(new Keyboard());
        addMouseListener(new Mouse());
    }

    public void paint(Graphics g) {
        Paint.paint(g);
    }
}

GuiButton (ペイント クラス):

package com.lojana.oregon.src;

import java.awt.*;

public class GuiButton {
    public GuiButton(Graphics g, String text, Font font, int coordX, int coordY,
            int textX, int textY, int width, int height) {
        Color border = Color.gray;
        Color fill = Color.white;
        Color textColor = Color.black;

        Stroke borderSize = new BasicStroke(8);

        g.setColor(border);
        ((Graphics2D) g).setStroke(borderSize);
        g.drawRect(coordX, coordY, width, height);
        g.setColor(fill);
        g.fillRect(coordX, coordY, width, height);
        g.setColor(textColor);
        g.setFont(font);
        g.drawString(text, textX, textY);
    }
}

GuiMainMenu (GuiButton ファイルを使用するファイル):

package com.lojana.oregon.src;

import java.awt.*;

public class GuiMainMenu {
    public static void paint(Graphics g) {
        new GuiButton(g, "Start Game", new Font("Arial", Font.BOLD, 20), 60, 80, 20, 20, 240, 40);
    }
}

直し方わかる方コメントお願いします。どうもありがとう :)

4

1 に答える 1

5

paintComponent(Graphics g)Swing プログラムは、代わりにpaint(Graphics g)直接オーバーライドすることになっていますJFrame。詳細については、次の記事を参照してください: http://java.sun.com/products/jfc/tsc/articles/painting/

さらに、このコンテンツ ペインに描画する必要があるため、(コンテンツ ペインの) に追加されたをオーバーライドするpaintComponentことをお勧めします。詳細については、このチュートリアルを参照してください: http://docs.oracle.com/javase/tutorial/uiswing/components/toplevel.htmlJPanelJFrameJFrame

于 2012-06-10T19:53:51.380 に答える