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

时间:2017-02-03 16:55:25

标签: 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);
    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格式的其余部分,包括颜色,插图,字体等。

当我在绘画后运行textArea.getLocation();时,它声称它位于0,600位置,即使它显然位于0,0。

我尝试更改x和y位置的校准,但文本仍保持在屏幕上的0,0。因此,我非常肯定这与.paint通话而不是.setLocation通话有关。

我意识到我应该使用某种格式管理器,但由于我使用的是.paint,我觉得它无济于事。

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

谢谢你的时间!

1 个答案:

答案 0 :(得分:0)

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

影响其地位
1) what layoutmanager you choose
2) your use of setPreferredSize(Dimension d), setMinimumSize(Dimension d), setMaximumSize(Dimension d)