如何在Java控制台中输出粗体文本?Blackjack程序开发求助
在Java Blackjack程序中添加粗体文本的方法
嘿,我懂你在找Java里给Blackjack程序加粗体的办法——得看你是在控制台输出里加,还是做GUI界面的时候用,两种场景的实现方式不一样,我给你掰扯清楚:
一、控制台输出场景
大部分现代终端(比如Windows Terminal、Linux/macOS的终端)都支持ANSI转义码来设置文本样式,粗体对应的转义码是\033[1m,关闭粗体(回到默认样式)用\033[0m。直接在输出字符串里拼接就行,举个Blackjack相关的例子:
public class BlackjackConsole { public static void main(String[] args) { // 定义粗体开启和重置的转义码 String boldOn = "\033[1m"; String resetStyle = "\033[0m"; // 输出带粗体的游戏提示 System.out.println(boldOn + "=== 欢迎来到Blackjack游戏 ===" + resetStyle); System.out.println("当前庄家手牌:" + boldOn + "? ♠" + resetStyle + " 5 ♥"); System.out.println("你的手牌:" + boldOn + "A ♦" + resetStyle + " " + boldOn + "10 ♣" + resetStyle + " (当前点数:21)"); } }
注意:如果是Windows旧版的cmd控制台,默认可能不支持ANSI转义码,这时候可以考虑引入Jansi库来兼容,但现在大部分人用的都是支持的终端,直接用转义码就够用啦。
二、GUI界面场景(比如Swing)
如果你是做桌面版的Blackjack,用Swing这类GUI框架的话,就得通过设置字体或者富文本样式来实现粗体:
1. 给组件整体设置粗体字体
比如给JLabel、JButton这些组件直接设置粗体字体:
import javax.swing.*; import java.awt.*; public class BlackjackGUI { public static void main(String[] args) { JFrame gameFrame = new JFrame("Blackjack 21点"); gameFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); gameFrame.setSize(500, 400); gameFrame.setLayout(new FlowLayout()); // 创建粗体字体(字体名、样式、大小) Font boldGameFont = new Font("微软雅黑", Font.BOLD, 18); // 带粗体的标题标签 JLabel titleLabel = new JLabel("Blackjack 游戏开始!"); titleLabel.setFont(boldGameFont); // 带粗体的手牌提示 JLabel playerHandLabel = new JLabel("你的手牌:A ♥ 10 ♠"); playerHandLabel.setFont(boldGameFont); gameFrame.add(titleLabel); gameFrame.add(playerHandLabel); gameFrame.setVisible(true); } }
2. 给文本部分内容设置粗体(富文本)
如果需要一段文本里只有部分内容粗体(比如手牌里的关键牌),可以用JTextPane搭配StyledDocument来实现:
import javax.swing.*; import javax.swing.text.*; import java.awt.*; public class BlackjackRichText { public static void main(String[] args) { JFrame frame = new JFrame("Blackjack 富文本演示"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(500, 300); JTextPane textPane = new JTextPane(); StyledDocument doc = textPane.getStyledDocument(); // 创建粗体样式 SimpleAttributeSet boldStyle = new SimpleAttributeSet(); StyleConstants.setBold(boldStyle, true); try { doc.insertString(doc.getLength(), "游戏提示:", null); doc.insertString(doc.getLength(), "你拿到了黑杰克!", boldStyle); doc.insertString(doc.getLength(), "\n你的手牌:", null); doc.insertString(doc.getLength(), "A ♦", boldStyle); doc.insertString(doc.getLength(), " 和 ", null); doc.insertString(doc.getLength(), "10 ♣", boldStyle); } catch (BadLocationException e) { e.printStackTrace(); } frame.add(new JScrollPane(textPane), BorderLayout.CENTER); frame.setVisible(true); } }
根据你的Blackjack程序类型选对应的方法就行啦,控制台用ANSI转义码,GUI就用字体或富文本样式~
内容的提问来源于stack exchange,提问作者user20523676
相关产品推荐
相关产品推荐

