假设我想单击一个按钮,那么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与我的问题无关。
答案 0 :(得分:2)
您应该通知框架其内容已更改(revalidate()
),并重新绘制自己(repaint()
):
public void actionPerformed(ActionEvent e) {
add(new JLabel("xxxxx"), BorderLayout.SOUTH);
revalidate();
repaint();
}