我正在開發一款小型紙牌遊戲,並且遇到了一些麻煩:當我嘗試向我的JLayeredPane
添加動態組件時,它不顯示它們。JLayeredPane顯示問題
我有一個自定義組件代表一個卡,我想以分層的方式顯示其中的2個。對此,我有以下類:
public class PairView extends JPanel {
private JLayeredPane layeredPane;
private CardView attackCard;
private CardView defenceCard;
private static Point origin = new Point(0, 0);
private static int offset = 10;
public PairView() {
}
public PairView(Card attackCard) {
setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));
layeredPane = new JLayeredPane();
layeredPane.setPreferredSize(new Dimension(120, 170));
this.defenceCard = null;
this.attackCard = new CardView(attackCard);
this.attackCard.setOpaque(true);
this.attackCard.setForeground(Color.black);
this.attackCard.setBorder(BorderFactory.createLineBorder(Color.black));
this.attackCard.setBounds(origin.x, origin.y, 100, 150);
layeredPane.add(this.attackCard, 0);
this.origin.x += offset;
this.origin.y += offset;
}
public void addDefenceCard(Card defenceCard) throws DurakException {
if (this.defenceCard == null) {
this.defenceCard = new CardView(defenceCard);
this.defenceCard.setOpaque(true);
this.defenceCard.setForeground(Color.black);
this.defenceCard.setBorder(BorderFactory.createLineBorder(Color.black));
this.defenceCard.setBounds(origin.x, origin.y, 100, 150);
layeredPane.add(this.defenceCard, 1);
} else {
throw new DurakException("A defence Card is already present");
}
}
我通過阻力測試此拖放在NetBeans接口,我有以下問題:
- 據我所知,默認的構造函數是始終調用,所以當我創建2個隨機
CardView
組件並將它們添加到默認構造函數的分層窗格中時,父項JFrame
顯示它們就好了。 - 如果我使用覆蓋的構造函數或嘗試添加另一個組件(如
addDefenceCard
方法),它不會顯示添加的組件。 - 致電
revalidate()
或repaint()
沒有做任何事情。
如何讓組件顯示?
*「如何讓組件顯示?」*我補充說這是一個問題。如果這是**不是**的問題,請[編輯](http://stackoverflow.com/posts/32781510/edit)並添加一個.. –