Java JTextArea的设置位置不工作

Java JTextArea的设置位置不工作,java,swing,layout-manager,jtextarea,Java,Swing,Layout Manager,Jtextarea,我不知道如何设置文本区域的位置。这是我的密码。不确定什么不起作用,显然JTextArea不像按钮那样设置位置那么简单 import javax.swing.*; import java.awt.*; import java.awt.event.*; class BackgroundImageJFrame extends JFrame { JButton b1; JLabel l1; public BackgroundImageJFrame() {

我不知道如何设置文本区域的位置。这是我的密码。不确定什么不起作用,显然JTextArea不像按钮那样设置位置那么简单

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

class BackgroundImageJFrame extends JFrame {
    
    JButton b1;
    JLabel l1;
    
    public BackgroundImageJFrame() {
        setTitle("Background Color for JFrame");
        setSize(1000, 1000);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);
        /*One way-----------------*/
        setLayout(new BorderLayout());
        JLabel background = new JLabel(new ImageIcon("background-landing.png"));
        add(background);
        background.setLayout(new FlowLayout());
        l1 = new JLabel("Here is a button");
        b1 = new JButton("I am a button");
        JTextArea t1 = new JTextArea("enter username", 10, 20);
        t1.setLocation(30, 30);
        background.add(l1);
        background.add(b1);
        background.add(t1);
    }
    
    public static void main(String args[]) {
        new BackgroundImageJFrame();
    }
}

显然,JTextArea并不像设置按钮那样简单

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

class BackgroundImageJFrame extends JFrame {
    
    JButton b1;
    JLabel l1;
    
    public BackgroundImageJFrame() {
        setTitle("Background Color for JFrame");
        setSize(1000, 1000);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);
        /*One way-----------------*/
        setLayout(new BorderLayout());
        JLabel background = new JLabel(new ImageIcon("background-landing.png"));
        add(background);
        background.setLayout(new FlowLayout());
        l1 = new JLabel("Here is a button");
        b1 = new JButton("I am a button");
        JTextArea t1 = new JTextArea("enter username", 10, 20);
        t1.setLocation(30, 30);
        background.add(l1);
        background.add(b1);
        background.add(t1);
    }
    
    public static void main(String args[]) {
        new BackgroundImageJFrame();
    }
}
您试图创建一个带有文本“此处是一个按钮”的标签和一个带有文本“我是一个按钮”的按钮

您的按钮也不会显示,因此评论没有意义

问题是您正在向JLabel添加组件。默认情况下,JLabel不显示子组件,因为它没有布局管理器

通过设置布局管理器,可以将组件添加到标签:

JLabel background = new JLabel(...);
background.setLayout( new FlowLayout() );
有关使用布局管理器的更多基础知识和工作示例,请阅读上的Swing教程部分。教程代码还将向您展示如何更好地构造类,以便您遵循Swing指南


您还可以查看:以获得一个可能的替代解决方案。

您还将LayoutManager与绝对布局混合使用,请参阅以了解为什么应避免使用绝对布局。尽量只使用LayoutManager。还要了解为什么要使用JTextArea输入名称?JTextArea用于显示多行文本。JTextField用于显示单行文本。很高兴它有帮助。不要忘记通过点击复选标记(答案旁边)来“接受”答案,这样人们就知道问题已经解决了。这适用于您的所有问题,因为您尚未接受19个问题的任何答案。