簡體   English   中英

如何從擴展Jbutton的類中繪制方法

[英]How do you draw a method from a class that extends Jbutton

我正在用Java制作記憶游戲。 我有一個擴展用於繪制卡片的JButton的類,並且有一個主跑步者類。 這是我的卡類。

import java.awt.Color;
import java.awt.Dimension;

import javax.swing.*;

public class Card extends JButton {
    private String cardValue;
    private boolean matched = false;
    private int width = 70;
    public int x;
    public int y;

    public Card(int x, int y) {
        this.x = x;
        this.y = y;
        setPreferredSize(new Dimension(x, y));
    }

    public void drawFaceDown() {
        setBackground(new Color(214, 247, 202));
        setBorder(BorderFactory.createLineBorder(Color.BLACK, 2));
    };

}

這是我的亞軍課

import java.util.List;
import java.util.ArrayList;


public class Runner {
    public static void main(String[] args) {
        List<Card> tiles = new ArrayList<Card>();


        int NUM_COLS = 5;
        int NUM_ROWS = 4;
        for (int i = 0; i < NUM_COLS; i++) {
            for (int j = 0; j < NUM_ROWS; j++) {
                tiles.add(new Card(i * 78 + 10, j * 78 + 40));
            }
        }

        for (int i = 0; i < tiles.size(); i++) {
            tiles.get(i).drawFaceDown();
        }






    }
}

在for循環中,我嘗試使用drawFaceDown(),但是在圖形面板上未繪制任何內容。 有人可以幫我解決所發生的事情嗎?

您應該將按鈕添加到面板中以便在某處顯示它。 就像是:

JFrame f = new JFrame();
f.add(tiles.get(i).drawFaceDown());

您應該將Cards添加到JFrame 按照您的代碼, GridLayout將是最適合您的。 像這樣更改您的Runner類。 我對按鈕的大小做了一些調整。

import java.util.List;
import java.util.ArrayList;
import javax.swing.*;
import java.awt.*;


public class Runner {
    public static void main(String[] args) {
        List<Card> tiles = new ArrayList<Card>();

        JFrame frame =  new JFrame();

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


        int NUM_COLS = 5;
        int NUM_ROWS = 4;

        frame.setLayout(new GridLayout(NUM_ROWS, NUM_COLS));

        for (int i = 0; i < NUM_COLS; i++) {
            for (int j = 0; j < NUM_ROWS; j++) {
                tiles.add(new Card(i * 8 + 10, j * 8 + 40));
            }
        }

        for (int i = 0; i < tiles.size(); i++) {
            frame.add(tiles.get(i));
            tiles.get(i).drawFaceDown();
        }

        frame.pack();
        frame.setVisible(true);

    }
}  

另外,請閱讀本教程

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM