JTextArea将不会“屏幕”到屏幕上的正确位置

问题描述:

我有一个JTextArea的问题,一直很烦人。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格式的其余部分,包括颜色,插图,字体等。

当我在绘画之后运行时,它声称它位于0,600位置,即使它清楚地位于0,0。

我试过改变x和y的位置calues,但文本仍然停留在我的屏幕上0,0。正因为如此,我相当肯定,这与.paint呼叫有关,而不是呼叫.setLocation

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

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

谢谢你的时间!

+1

我不认为你了解如何绘画在Java中的作品。你不应该调用textArea.paint(g);直接(除非g是图像的图形对象)相反,你应该调用textArea.repaint() – ControlAltDel

+0

那么textArea.repaint()究竟做了什么(对不起XD)。到目前为止,我已经完成了所有与g.paint相关的工作,并且完美地工作。当我尝试使用.repaint时,文本不再出现,所以我很困惑我何时应该使用它 – danielcwr

+0

使用可怕的编程的力量,我能够通过增加文本来将文本置于所需的位置JTextArea的高度与我的屏幕高度有关,然后我使用了插入符而不是.setLocation:3 – danielcwr

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

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

好吧,我会尝试这一点。感谢您的快速回复。 – danielcwr