无法添加ActionListener来添加Component

时间:2016-02-02 10:10:27

标签: java swing

假设我想单击一个按钮,那么JLabel / JTextArea / ...将在GUI中显示如何完成这项工作?

示例代码:

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

public class MyJFrame extends JFrame {
    public MyJFrame() {
        JButton jButton = new JButton();
        jButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                add(new JLabel("xxxxx"), BorderLayout.SOUTH);
            }
        });

        add(jButton, BorderLayout.CENTER);
    }

    public static void main(String[] args) {
        MyJFrame myJFrame = new MyJFrame();
        myJFrame.pack();
        myJFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        myJFrame.setVisible(true);
        myJFrame.setLocationRelativeTo(null);
    }
}

我的代码有问题。单击按钮后,没有JLabel显示。

更新

有人能告诉我如果我想从java官方信息中解决我的问题,我应该在哪里搜索?似乎JAVA教程或API与我的问题无关。

1 个答案:

答案 0 :(得分:2)

您应该通知框架其内容已更改(revalidate()),并重新绘制自己(repaint()):

public void actionPerformed(ActionEvent e) {
                add(new JLabel("xxxxx"), BorderLayout.SOUTH);
                revalidate();
                repaint();
            }