到目前为止,我正在努力创建一个 JAVA 版本的 uno,我的老师称之为“Singles”。目前,我只是想获得一个可以移除卡片的工作套牌。
不过,我目前的问题是,当我移除一张卡时,没有任何更新。它根本不会重绘。我不知道为什么。
这是面板和框架类。
控制板:
package singles;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JPanel;
import java.awt.event.MouseMotionListener;
/**
*
* @author Xenorosth
*/
public class CardPanel extends JPanel{
private Card myCard; //To get information for card
//private static Deck myDeck = new Deck(); //Get a deck!
public CardPanel(Card myOtherCard){
this.setSize(100,150);
this.setPreferredSize(new Dimension(100,150));
myCard = myOtherCard;
//myCard = myDeck.getMainCard(0);
}
public void paintComponent(Graphics g){
super.paintComponent(g);
g.setColor(Color.black); //Set word drawings to black
if(myCard.isFlipped()){
if(myCard.getColor() == "red"){
this.setBackground(Color.red);
g.drawString(myCard.getValue(), 30, 30);
}
else if(myCard.getColor() == "green"){
this.setBackground(Color.green);
g.drawString(myCard.getValue(), 30, 30);
}
else if(myCard.getColor() == "blue"){
this.setBackground(Color.blue);
g.drawString(myCard.getValue(), 30, 30);
}
else if(myCard.getColor() == "yellow"){
this.setBackground(Color.yellow);
g.drawString(myCard.getValue(), 30, 30);
}
else if(myCard.getColor() == "black"){
this.setBackground(Color.black);
g.setColor(Color.white);
g.drawString(myCard.getValue(), 30, 30);
g.setColor(Color.black);
}
}
else{
this.setBackground(Color.black);
g.setColor(Color.white);
g.drawString("Singles", 30, 30);
g.setColor(Color.black);
}
}
/**
* @return the myCard
*/
public Card getMyCard() {
return myCard;
}
/**
* @param myCard the myCard to set
*/
public void setMyC`enter code here`ard(Card myCard) {
this.myCard = myCard;
}
}
框架:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package singles;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
/**
*
* @author Xenorosth
*/
public class SinglesFrame extends JFrame implements MouseListener, MouseMotionListener{
Deck myDeck = new Deck();
CardPanel myTopMain = new CardPanel(myDeck.getMainCard(0)); //Top card of main deck
CardPanel myTopUsed = new CardPanel(myDeck.getMainCard(1)); //Top card of used deck
JLabel myLabel1 = new JLabel();
public SinglesFrame(){
setLayout(new FlowLayout(FlowLayout.CENTER));
// myLabel1.setText(myDeck.getMainDeckLength() + "");
myTopMain.addMouseListener(this);
this.add(myTopMain);
this.add(myTopUsed);
this.add(myLabel1);
}
@Override
public void mouseClicked(MouseEvent e) {
myDeck.addUsedCard(myDeck.getMainCard(0));
myDeck.removeMainCard(0);
this.repaint();
System.out.println(myDeck.getMainCard(0).toString());
}
@Override
public void mousePressed(MouseEvent e) {
//throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void mouseReleased(MouseEvent e) {
// throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void mouseEntered(MouseEvent e) {
// throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void mouseExited(MouseEvent e) {
// throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void mouseDragged(MouseEvent e) {
// throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void mouseMoved(MouseEvent e) {
// throw new UnsupportedOperationException("Not supported yet.");
}
}