【发布时间】:2014-11-21 16:08:56
【问题描述】:
这是一个菜鸟问题。 我们在课堂上学习小程序,而我正在自己尝试一些东西。
以下是代码
import java.awt.*;
import javax.swing.*;
class controls extends JPanel{
@Override public void paintComponent(Graphics g) {
g.drawOval(50, 50, 50, 50); // <-- draws an oval on the panel
}
}
public class test extends JApplet{
public void init(){
final JPanel stage = new JPanel();
final JPanel controlPanel = new controls();
final JPanel banner = new JPanel();
final JLabel name = new JLabel("Test", JLabel.CENTER);
this.setLayout(new BorderLayout());
banner.setBackground(Color.CYAN);
banner.add(name);
this.add(controlPanel, BorderLayout.WEST);
this.add(banner, BorderLayout.NORTH);
}
}
据我了解,paintComponent() 不需要显式调用。 控件类单独使用时效果很好。
我的意思是下面的代码有效。
public class test extends JApplet{
public void init(){
JPanel controlPanel = new controls();
this.add(controlPanel);
}
}
我无法理解其中的区别。为什么相同的代码在这种情况下有效,而不是在以前的情况下?
谢谢。
【问题讨论】:
-
我不确定我是否遵循。哪些代码有效,哪些无效?当您运行不起作用的代码时会发生什么?
-
@MichaelMyers:没有布局的代码有效。具有布局的显示横幅面板,但不显示我在测试类中创建的对象的控制面板。