当前位置: 首页 > 知识库问答 >
问题:

标签未添加到Externam函数的Jframe中

孟宏才
2023-03-14

我已经创建了一个按钮,应该添加“标签”到我的框架,但它只是不工作,它打印“开始…”但不添加“标签”这是我的代码

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

public class NameHere extends JFrame implements ActionListener {
JButton button = new JButton("Start");
JLabel label = new JLabel("Starting the App");
NameHere() {

    button.setBounds(212,235,75,30);
    button.addActionListener(this::actionPerformed);
    label.setBounds(250,50,250,20);
    this.setSize(500,500);
    this.setTitle("Platformer");
    this.setLayout(null);
    this.setResizable(false);
    this.setVisible(true);
    this.add(button);
    this.setDefaultCloseOperation(3);


}

@Override
public void actionPerformed(ActionEvent e) {
    if(e.getSource()==button){
        System.out.println("Starting...");
        NameHere.this.add(label);//Here it should add the label to the frame
    }
}
}

在这段代码的actionPerformed函数中,它应该添加标签,但它不起作用,但当我尝试将其添加到我的Namehere函数中时,它起作用了。

共有1个答案

房新翰
2023-03-14

从故障排除指南:

添加或删除组件

添加或删除组件时,必须手动调用重新绘制或重新验证Swing和AWT。

最好同时调用这两个函数,请参见JavaSwing revalATE()vs repaint()。

现在代码为mre:

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

public class NameHere extends JFrame implements ActionListener {
    JButton button = new JButton("Start");
    JLabel label = new JLabel("Starting the App");
    NameHere() {
        button.setBounds(212,235,75,30);
        button.addActionListener(this::actionPerformed);
        label.setBounds(250,50,250,20);
        this.setSize(500,500);
        this.setTitle("Platformer");
        this.setLayout(null);
        this.setResizable(false);
        this.setVisible(true);
        this.add(button);
        this.setDefaultCloseOperation(3);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getSource()==button){
            System.out.println("Starting...");
            NameHere.this.add(label);//Here it should add the label to the frame
            revalidate();
            repaint();
        }
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new NameHere();
            }
        });
    }
}
 类似资料:
  • 我一直在使用JFrame进行我的项目,但遇到了一个问题。这是我的代码: 还有,这是我的主要。java: 我想做的是向面板添加文本字段和标签。但是,当我运行此代码时,它会显示:结果 如果我在框架中添加标签和文本字段,效果很好。你能帮我解决这个问题吗?非常感谢你。

  • 标签通常用于帮助记录图表设计进程。例如,解释一组表对象。若要创建一个新的标签,点击工具栏的 “标签”按钮,并点击画布的任意位置。 在画布中标签对象的弹出式菜单选项包括: 选项 描述 编辑 更改标签的内容。 剪切 从图表移除标签并放它在剪贴板。 复制 从图表复制标签到剪贴板。 粘贴 将剪贴板的内容贴到图表。 选择全部标签 在图表中选择全部标签。 删除 从图表中删除标签。 调整适合大小 自动调整标签的

  • 标签通常用于帮助记录图表设计进程。例如,解释一组表对象。若要创建一个新的标签,点击工具栏的 “标签”按钮,并点击画布的任意位置。 在画布中标签对象的弹出式菜单选项包括: 选项 描述 编辑 更改标签的内容。 剪切 从图表移除标签并放它在剪贴板。 复制 从图表复制标签到剪贴板。 粘贴 将剪贴板的内容贴到图表。 选择全部标签 在图表中选择全部标签。 删除 从图表中删除标签。 调整适合大小 自动调整标签的

  • 标签通常用于帮助记录图表设计进程。例如,解释一组表对象。若要创建一个新的标签,点击工具栏的 按钮,并点击画布的任意位置。 在画布中标签对象的弹出式菜单选项包括: 选项 描述 编辑 更改标签的内容。 剪切 从图表移除标签并放它在剪贴板。 复制 从图表复制标签到剪贴板。 粘贴 将剪贴板的内容贴到图表。 选择全部标签 在图表中选择全部标签。 删除 从图表中删除标签。 调整适合大小 自动调整标签的大小以适

  • 标签通常用于帮助记录图表设计进程。例如,解释一组表对象。若要创建一个新的标签,点击工具栏的 按钮,并点击画布的任意位置。 在画布中标签对象的弹出式菜单选项包括: 选项 描述 编辑 更改标签的内容。 剪切 从图表移除标签并放它在剪贴板。 复制 从图表复制标签到剪贴板。 粘贴 将剪贴板的内容贴到图表。 选择全部标签 在图表中选择全部标签。 删除 从图表中删除标签。 调整适合大小 自动调整标签的大小以适

  • 标签通常用于帮助记录图表设计进程。例如,解释一组表对象。若要创建一个新的标签,点击工具栏的 按钮,并点击画布的任意位置。 在画布中标签对象的弹出式菜单选项包括: 选项 描述 编辑 更改标签的内容。 剪切 从图表移除标签并放它在剪贴板。 复制 从图表复制标签到剪贴板。 粘贴 将剪贴板的内容贴到图表。 选择全部标签 在图表中选择全部标签。 删除 从图表中删除标签。 调整适合大小 自动调整标签的大小以适