我是java GUI編程的新手。 我創建了一個JFrame
。 在這個JFrame
裏面,我創建了一個JPanel
。 在這JPanel
裏面我創建了另一個JPanel
(讓我們稱之爲「A」)。JFrame中看不到JPanel中的子JPanel
我在「A」中繪製了一個矩形,並且想要使用圖形創建按鈕。 我的gui中沒有矩形。我可以看到「A」中的paintComponent()
方法未被調用。
代碼: 的JPanels:(孩子JPanel
是內部類)
public class MemoryPanel extends JPanel {
public MemoryPanel(){
setPreferredSize(new Dimension(350,448));
}
@Override
public void paintComponent(Graphics g) {
//POSITIONING
setLayout(new BorderLayout());
//CREATE MEMORY BUTTONS
MemButton a=new MemButton();
//Drawing Rectangles for Memory
add(a,BorderLayout.CENTER);
}
private class MemoryButton extends JPanel{
public MemoryButton(){
setLayout(null);
setPreferredSize(new Dimension(87,40));
}
@Override
public void paintComponent(Graphics g){
Graphics2D td= (Graphics2D)g;
td.drawRect(0, 0, 20, 20);
}
}
}
編輯: 感謝所有, 我不得不引起與它相同的類名的問題,另一個包。它現在看起來很有效。
1)'paintComponent'方法應該用於繪製圖形,而不是用於創建和添加組件。在構造函數中這樣做。 2)如果您將按鈕添加到「BorderLayout.CENTER」,則「setPreferredSize」不會達到您所期望的。該按鈕將佔用整個可用空間。 3)不要忘記在'paintComponent'方法的開頭調用'super.paintComponent()'。此外,MemButton與MemoryButton相同嗎? - 請考慮發佈重現問題的[mcve]。 –