2012-06-10 32 views
1

我需要帮助,因为我想用Java编码游戏。 当我发现它不会向JFrame绘制字符串时,我停在了我的轨道上。 我尝试了几种方法来解决这个问题,并做了大量的研究,但什么都没发现。 这是代码: - 俄勒冈(主类):JFrame不会让我drawString();

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); 
    } 
} 

如果你知道如何解决它,请评论。 非常感谢:)

+0

您是什么意思,它不会绘制'String'?你是否遇到异常?除'drawString'之外的所有东西都可以工作吗? – Jeffrey

+0

我试图让它使用paint(Graphics g)方法向JFrame绘制一个字符串。我试图画出的文字不会显示出来。当我尝试在主文件中使用drawString()方法时,它会显示文本,但会显示它后面的程序。 –

+0

这里heck是Paint类吗?这整个方法似乎蠢蠢欲动,包括你试图直接在JFrame上绘制。但是还有很多代码没有显示给我们,包括关键代码。我强烈建议您阅读Swing绘图教程,您可以在主要Java教程页面找到这些教程,以了解如何正确绘制。 –

回答

5

摆动程序应该覆盖paintComponent(Graphics g)而不是paint(Graphics g)并直接到JFrame。看到这篇文章的详细信息: http://java.sun.com/products/jfc/tsc/articles/painting/

此外,它会更好地覆盖被添加到(内容窗格)一JPanelpaintComponentJFrame,而不是JFrame本身,因为你要画到这个内容窗格。有关详细信息,请参阅本教程: http://docs.oracle.com/javase/tutorial/uiswing/components/toplevel.html