我遇到了一个非常烦人的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
调用并将正在绘制的文本的位置更改为屏幕。
谢谢你的时间!
答案 0 :(得分:0)
使用布局管理器时,布局管理器本身就是调用setLocation
和setSize
的布局管理器,因此您所做的任何尝试都将被覆盖。您需要使用布局管理器并允许它将组件放置在它认为应该去的位置。你通过
1) what layoutmanager you choose
2) your use of setPreferredSize(Dimension d), setMinimumSize(Dimension d), setMaximumSize(Dimension d)