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字符显示在按钮上?
答案 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]);
}
}
}
}