为了账号安全,请及时绑定邮箱和手机立即绑定

标签中的“填充” Unicode字符

标签中的“填充” Unicode字符

泛舟湖上清波郎朗 2019-10-31 13:16:45
如何在Swing的标签中“填充” Unicode字符?我正在尝试为最近编程的国际象棋程序创建一个用户界面(如上面所示的国际象棋件)。在这里面我使用Unicode字符来表示我的棋子(\u2654通过\u265F)。问题如下:当我将棋子的背景设置为JLabel白色时,整个标签将被填充(在我的情况下,它是一个50 * 50px的白色正方形,顶部是字符)。这导致我的作品看起来像瓷砖,而不仅仅是它们的图片。当我将标签设置为不透明时,我只是得到了棋子的千篇一律,而不是里面充满了东西的棋子。例如实际结果有没有办法只填充角色?如果不是,我想我会制作一张精灵表,但是我喜欢这样做,因为我可以使用棋子toString()的标签方法。码import java.awt.*;import javax.swing.*;import java.util.Random;class ChessBoard {    static Font font = new Font("Sans-Serif", Font.PLAIN, 50);    static Random rnd = new Random();    public static void addUnicodeCharToContainer(        String s, Container c, boolean randomColor) {        JLabel l = new JLabel(s);        l.setFont(font);        if (randomColor) {            int r = rnd.nextInt(255);            int g = rnd.nextInt(255);            int b = rnd.nextInt(255);            l.setForeground(new Color(r,g,b));            l.setBackground(new Color(255-r,255-g,255-b));            l.setOpaque(true);        }        c.add(l);    }    public static void main(String[] args) {        Runnable r = new Runnable() {            @Override            public void run() {                JPanel gui = new JPanel(new GridLayout(0,6,4,4));                String[] pieces = {                    "\u2654","\u2655","\u2656","\u2657","\u2658","\u2659",                    "\u265A","\u265B","\u265C","\u265D","\u265E","\u265F"                };                for (String piece : pieces) {                    addUnicodeCharToContainer(piece,gui,false);                }                for (String piece : pieces) {                    addUnicodeCharToContainer(piece,gui,true);                }                JOptionPane.showMessageDialog(null, gui);            }        };        SwingUtilities.invokeLater(r);    }}
查看完整描述

3 回答

  • 3 回答
  • 0 关注
  • 567 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信