在unicode中显示棋子不工作

时间:2015-05-04 15:46:50

标签: java swing

import java.awt.*;

import javax.swing.*;

public class GraphicalDisplay extends JFrame implements Display{
    public void showPiecesOnBoard(Piece[][] data) {
        getContentPane().removeAll();
        setSize(400,400);
        setTitle("chess");
        setVisible(true);
        setResizable(false);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        Container contentPane = getContentPane();
        contentPane.setLayout(new GridLayout (8,8));
        JButton[][] squares = new JButton[8][8];

        for(int y=7; y>=0; y--){
            for(int x=0; x<8; x++){
                squares[x][y] = new JButton();

                if ((x + y) % 2 == 0) {
                    squares[x][y].setBackground(Color.black);
                } 
                else {
                    squares[x][y].setBackground(Color.white);
                }  
                //if piece is present print out the unicode corresponding to piece
                if(data[x][y]!=null){
                    if (data[x][y].toString() == "k")
                        squares[x][y].setText("\u2654");
                    else if(data[x][y].toString() == "q")
                        squares[x][y].setText("\u2655");
                    else if(data[x][y].toString() == "r")
                        squares[x][y].setText("\u2656");
                    else if(data[x][y].toString() == "b")
                        squares[x][y].setText("\u2657");
                    else if(data[x][y].toString() == "n")
                        squares[x][y].setText("\u2658");
                    else if(data[x][y].toString() == "p")
                        squares[x][y].setText("\u2659");
                    else if (data[x][y].toString() == "K")
                        squares[x][y].setText("\u265A");
                    else if(data[x][y].toString() == "Q")
                        squares[x][y].setText("\u265B");
                    else if(data[x][y].toString() == "R")
                        squares[x][y].setText("\u265C");
                    else if(data[x][y].toString() == "B")
                        squares[x][y].setText("\u265D");
                    else if(data[x][y].toString() == "N")
                        squares[x][y].setText("\u265E");
                    else if(data[x][y].toString() == "P")
                        squares[x][y].setText("\u265F");
                }
                contentPane.add(squares[x][y]);
            }

        }

    }
}

这是我的代码我正在使用eclipse并确保在常用设置中以utf8运行。

但它仍然不会打印出按钮顶部的任何unicode字符。

虽然如果我只是打印出该位置的字符串,它会正确地打印出按钮顶部的字母。

那么我如何才能将unicode字符显示在按钮上?

1 个答案:

答案 0 :(得分:0)

import java.awt.*;

import javax.swing.*;

public class GraphicalDisplay extends JFrame implements Display{
    public void showPiecesOnBoard(Piece[][] data) {
        getContentPane().removeAll();
        setSize(800,800);
        setTitle("chess");
        setVisible(true);
        setResizable(false);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        Container contentPane = getContentPane();
        contentPane.setLayout(new GridLayout (8,8));
        JButton[][] squares = new JButton[8][8];

        for(int y=7; y>=0; y--){
            for(int x=0; x<8; x++){
                squares[x][y] = new JButton();

                if ((x + y) % 2 == 0) {
                    squares[x][y].setBackground(Color.black);
                } 
                else {
                    squares[x][y].setBackground(Color.white);
                }  
                //if piece is present print out the unicode corresponding to piece
                if(data[x][y]!=null){
                    if (data[x][y].toString().equals("k"))
                        squares[x][y].setText("\u2654");
                    else if (data[x][y].toString().equals("q"))
                        squares[x][y].setText("\u2655");
                    else if (data[x][y].toString().equals("r"))
                        squares[x][y].setText("\u2656");
                    else if (data[x][y].toString().equals("b"))
                        squares[x][y].setText("\u2657");
                    else if (data[x][y].toString().equals("n"))
                        squares[x][y].setText("\u2658");
                    else if (data[x][y].toString().equals("p"))
                        squares[x][y].setText("\u2659");
                    else if (data[x][y].toString().equals("K"))
                        squares[x][y].setText("\u265A");
                    else if (data[x][y].toString().equals("Q"))
                        squares[x][y].setText("\u265B");
                    else if (data[x][y].toString().equals("R"))
                        squares[x][y].setText("\u265C");
                    else if (data[x][y].toString().equals("B"))
                        squares[x][y].setText("\u265D");
                    else if (data[x][y].toString().equals("N"))
                        squares[x][y].setText("\u265E");
                    else if (data[x][y].toString().equals("P"))
                        squares[x][y].setText("\u265F");
                }
                contentPane.add(squares[x][y]);
            }

        }

    }
}