我想JTextArea
在某个位置。我尝试了几种方法,例如使用不同LayoutManager
的 s,根本不LayoutManager
使用setLayout(null)
等。无论我做什么,它看起来都像setBounds()
,setLocation()
并且setSize()
在这里不起作用,但是我读到了它,它说它应该可以工作。那么我做错了什么?
JTextArea
总是太高,如果我更改参数,位置不会改变setBounds()
。
public class textarea extends JPanel {
public static void main(String[] args){
JFrame frame = new JFrame("text area");
textarea content = new textarea();
frame.setContentPane(content);
frame.setLocation(120,70);
frame.pack();
frame.setVisible(true);
frame.setSize(700,500);
}
JPanel PanelForText;
public textarea(){
setBackground(Color.LIGHT_GRAY);
setLayout(new FlowLayout(FlowLayout.CENTER,50,50));
txtArea txt = new txtArea();
PanelForText = new JPanel();
PanelForText.setPreferredSize(new Dimension(500,300));
PanelForText.setBorder(BorderFactory.createEtchedBorder());
PanelForText.add(txt);
add(PanelForText);
}
}
public class txtArea extends JPanel {
boolean textAreaCreated = false;
public txtArea(){
setBackground(Color.WHITE);
setPreferredSize(new Dimension(496, 290));
}
public void paintComponent(Graphics g){
super.paintComponent(g);
g.setColor(Color.GRAY);
g.fillRect(50, 25, 400, 245);
if (!textAreaCreated)
createTextArea();
}
public void createTextArea() {
JTextArea Text = new JTextArea();
Text.setBounds(500,300,300,300);
Text.setOpaque(false);
Text.setWrapStyleWord(true);
Text.setLineWrap(true);
Text.setBorder(BorderFactory.createLineBorder(Color.RED));
add(Text);
textAreaCreated = true;
}
}
这是我想要的样子:
这是它目前的样子:
我做了一些教程,他们使用JTextField
添加到JPanel
s 的 s,但我想知道我是否可以只使用 aJTextField
或JTextArea
更多文本而不先将其添加到面板!
就像我说的,我正在查找“如何设置JTextArea
位置”,它说使用setBounds()
. 显然那是不正确的。所以我只想知道如何做得更好。另外:我确实阅读了很多关于LayoutManager
s 的内容,但对我来说尝试使用它比仅仅阅读它更有帮助......
JTextArea
我尝试了行和列,但它并没有改变它不在正确位置的事实。
我所做的是(在 CreateTextArea 方法中):
public void createTextArea() {
JTextArea Text = new JTextArea(5,1);
Text.setOpaque(false);
Text.setWrapStyleWord(true);
Text.setLineWrap(true);
Text.setBorder(BorderFactory.createLineBorder(Color.RED));
add(Text);
textAreaCreated = true;
}