Java JTextArea不会;。油漆;到屏幕上的正确位置

Java JTextArea不会;。油漆;到屏幕上的正确位置,java,jtextarea,Java,Jtextarea,我对JTextArea有一个问题,这个问题一直很烦人 我正在尝试为一个项目制作一个2D游戏,目前我正在尝试使用JTextArea而不仅仅是图像在屏幕上显示文本 我配置JTextArea的代码如下: Insets margin = new Insets(10,30,0,0); //bottom, left, top, right textArea = new JTextArea(); textArea.setSize(textWidth, textHeight);

我对JTextArea有一个问题,这个问题一直很烦人

我正在尝试为一个项目制作一个2D游戏,目前我正在尝试使用JTextArea而不仅仅是图像在屏幕上显示文本

我配置JTextArea的代码如下:

    Insets margin = new Insets(10,30,0,0); //bottom, left, top, right

    textArea = new JTextArea();
    textArea.setSize(textWidth, textHeight);
    textArea.setLineWrap(true);
    textArea.setWrapStyleWord(true);
    textArea.setMargin(margin);
    textArea.setFont(halFont);
    textArea.setForeground(Color.YELLOW);
    textArea.setBackground(new Color(0,0,0,0));
    textArea.setLocation(0, 600);
我的问题是,当我使用以下方法将其“绘制”到屏幕上时:
textArea.paint(g)
它只绘制到位置0,0,但是它保留了文本区域的其他格式,包括颜色、插图、字体等

当我运行
textArea.getLocation()时喷漆后,它声称它位于0600位置,尽管它明显位于0,0

我已尝试更改x和y位置计算值,但文本在屏幕上仍保持在0,0。正因为如此,我相当确定这与
.paint
调用有关,而不是
.setLocation
调用

我意识到我应该使用某种格式管理器,但由于我使用的是
.paint
,我觉得它不会有帮助

问:如何使用
.paint
调用并更改正在绘制的文本在屏幕上的位置


谢谢你的时间

使用布局管理器时,布局管理器本身是调用
setLocation
setSize
的管理器,因此您所做的任何尝试都将被覆盖。您需要使用布局管理器,并允许它将组件放置在它认为应该放置的位置。你通过

1) what layoutmanager you choose
2) your use of setPreferredSize(Dimension d), setMinimumSize(Dimension d), setMaximumSize(Dimension d)

我认为你不了解Java中绘画的工作原理。永远不要调用textArea.paint(g);直接调用(除非g是图像中的图形对象),您应该调用textArea.repaint(),那么textArea.repaint()到底做了什么(抱歉XD)。到目前为止,我已经用g.paint完成了所有的工作,它工作得非常完美。当我尝试单独使用.repaint时,文本不再显示,因此我对何时使用iTunes感到困惑使用糟糕的编程功能,通过将JTextArea的高度增加到屏幕的高度,我能够将文本放置在所需的位置,然后我使用了插入而不是。setLocation:3只是一点建议:假设你是一名学生或不是以专业能力编程,最好学会如何正确编程,而不是沉溺于“糟糕的编程”