我有這個簡單的代碼:JFrame添加自定義JpanelMyPanel,它覆寫paintComponent了繪制矩形的方法。但是視窗上沒有顯示任何內容:
import javax.swing.*;
import java.awt.*;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class TestGui extends JFrame {
public TestGui() {
setLayout(new FlowLayout());
JPanel panel = new JPanel();
panel.add(new JLabel("H E L L O"));
getContentPane().add(panel);
getContentPane().add(new MyPanel());
setSize(100, 100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
repaint();
revalidate();
setVisible(true);
}
class MyPanel extends JPanel {
private int squareX = 50;
private int squareY = 50;
private int squareW = 20;
private int squareH = 20;
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.RED);
g.fillRect(squareX,squareY,squareW,squareH);
}
}
public static void main(String[] args) {
TestGui gui = new TestGui();
}
}
uj5u.com熱心網友回復:
默認情況下,空JPanel的大小為0x0,因此當您將其添加到 UI 時,布局管理器(在本例中)會尊重它的請求并使其成為0x0
開始添加...
@Override
public Dimension getPreferredSize() {
return new Dimension(100, 100);
}
到 MyPanel
此外,repaint和revalidate呼叫不會做任何事情,因為視窗尚未附加到本機對等點(渲染表面)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/372471.html
下一篇:在JTable上顯示輸入
