這是一個noob問題。 我們在課堂上正在教小應用程序,我正在嘗試自己的一些東西。paintComponent重寫在面板上繪製
以下是代碼
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);
}
}
我無法理解區別。爲什麼相同的代碼在這種情況下工作,而不是在以前?
謝謝。
我不確定我關注。哪些代碼有效,哪些不會?當你運行不起作用的代碼時會發生什麼? – 2014-11-21 16:17:30
@MichaelMyers:沒有佈局的代碼工作。具有佈局的人將顯示橫幅面板,但不顯示其在測試類中創建的對象的控件面板。 – psyc0der 2014-11-21 17:19:50