我目前正在嘗試創建一個程序,通過鍵盤按鍵將矩形移動到背景圖像上。我面臨的問題是,當我繪製組件時,它們只是簡單地放在一起,而不是覆蓋背景圖像的正方形。以下是顯示這兩個組件的代碼;爲什麼我的組件相鄰顯示?
JLayeredPane panel = new JLayeredPane();
panel.setLayout(new FlowLayout());
add(panel);
paintBackground pb = new paintBackground(bimg);
panel.add(pb, 1, 0);
paintPlayer cc = new paintPlayer(startX, startY);
panel.add(cc, 2, 0);
pack();
setVisible(true);
我相信問題是paintPlayer組件設置爲全尺寸,並且似乎有背景。該paintPlayer組件代碼看起來是這樣的:
public Dimension getMinimumSize() {
return new Dimension(800,600);
}
@Override
public Dimension getPreferredSize() {
return new Dimension(800,600);
}
@Override
public Dimension getMaximumSize() {
return new Dimension(800,600);
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.red);
System.out.println(startX + startY);
g.fillRect(startX, startY, 30, 30);
}
我在設置組件的大小隻是矩形的大小有一展身手,但這樣我可以不使用前兩個值移動矩形在fillRect中。由組件(800x600)填充的其餘空間的背景似乎不透明。
添加時,組件只是相鄰顯示,如下所示:https://gyazo.com/57245c518e02778c36ffc89ba75d5a81。我如何着手在paintBackground的頂部添加paintPlayer,以便它只覆蓋背景圖像上的矩形。
我已經做了一點搜索,但我似乎無法解決。也許與佈局有關?我注意到的另一件事是,通過這樣做,框架或窗格都不會從setBackground中受益,因爲它不可見。 歡呼任何幫助。
這些paintBackground和paintPlayer類是什麼?他們是否寫了擴展(J)組件? – Brion
是的,paintBackground只是一個擴展JComponent並使用drawImage的類,而paintPlayer是擴展JComponent的另一個類。對不起,混淆 –
請參閱[這裏](http://stackoverflow.com/questions/27459783/using-jlayeredpane-to-add-multiple-jpanels-to-a-jpanel) – asdf