我有一個有兩層的窗口:一個靜態背景和一個包含移動對象的前景。我的想法是隻繪製一次背景(因爲它不會改變),所以我將變化的面板變爲透明並將其添加到靜態背景的頂部。下面是該代碼:有多個圖層的JFrame
public static void main(String[] args) {
JPanel changingPanel = new JPanel() {
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.RED);
g.fillRect(100, 100, 100, 100);
}
};
changingPanel.setOpaque(false);
JPanel staticPanel = new JPanel();
staticPanel.setBackground(Color.BLUE);
staticPanel.setLayout(new BorderLayout());
staticPanel.add(changingPanel);
JFrame frame = new JFrame();
frame.add(staticPanel);
frame.setSize(800, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
這段代碼給了我正確的圖像我想,但我每次重繪changingPanel
時間,staticPanel
被重新粉刷,以及(這顯然是對畫靜態的整體思路面板只有一次)。有人可以告訴我什麼是錯的嗎?
僅供參考我使用javax.swing.Timer重新計算並每隔24次重新繪製更改的面板。
是的我同意,所以不適合我 – phunehehe 2010-04-24 07:01:03