我正在研究事件处理并执行以下操作:
创建了一个没有任何组件的 JFrame
我重写了 keyPressed() 方法,这样每当从键盘按下一个键时,框架中就会出现一个按钮(通过使用 add() 然后调用 repaint())。 现在我想问的是,在从键盘按下按键时,没有任何内容被添加到框架中,但是当我调整框架窗口大小时按下该键后,按钮从窗口中的任何地方出现框架.... 发生了什么事?
import java.awt.*; import java.awt.event.*; import javax.swing.*; class MyFrame extends JFrame implements KeyListener { private JButton bt=new JButton(); MyFrame() { addKeyListener(this); } public void keyPressed(KeyEvent ke) { this.add(bt); repaint(); } public void keyTyped(KeyEvent ke) { } public void keyReleased(KeyEvent ke) { } } public class MyClass /*class containing the main method*/ { public static void main(String args[]) { MyFrame frm=new MyFrame(); frm.setVisible(true); frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
最佳答案
,nothing was being added to the frame,
组件已添加到框架中。问题是它的大小为 (0, 0),所以没有什么可绘制的
however after pressing the key when i resized the frame WINDOW,the button came out from nowwhere in the frame
调用布局管理器,并根据布局管理器的规则为组件指定大小和位置。现在您可以看到该组件了。
当您将组件添加到可见 GUI 时,代码为:
panel.add(...);
panel.revalidate();
panel.repaint();
关于java - 组件未按预期添加到框架中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16740240/