【问题标题】:How do I make text wrap around a JLabel? [duplicate]如何使文本环绕 JLabel? [复制]
【发布时间】:2013-05-10 15:41:49
【问题描述】:

这似乎是一个愚蠢的问题,但我做不到;我使用扫描仪读取文件,然后使用 while 循环将文本输入到字符串中,然后将其放入 JLabel 中。但是,文本显示在一条很长的水平线上,如何使所有文本像原始文本文件中的段落一样正常显示? 代码:

class howToPlay implements ActionListener{

@Override
public void actionPerformed(ActionEvent e) {
    JFrame htp = new JFrame();
    htp.setSize(300, 100);
    htp.setLocationRelativeTo(null);
    Scanner fileStream = null;
    try {
        fileStream = new Scanner(new File("text/howtoplay.txt"));
    } catch (FileNotFoundException e1) {
        System.out.println("File not found");
        e1.printStackTrace();
    }
    String file = "";
    while(fileStream.hasNextLine())file += fileStream.nextLine();
    JLabel howToPlay = new JLabel(file);
    htp.add(howToPlay);
    htp.setVisible(true);

}

}

这是文件中的文字,是游戏规则:

游戏的目的是移动你的棋子,直到它们都在一个相连的组中。对角线被认为是连通的。但是,有一些规则需要遵守:

-白先走 - 每一回合,玩家移动他的一个棋子,在一条直线上,与任何一种颜色的棋子一样多的方格 沿着运动路线的任何地方。 (这些是行动路线)。 - 你可以跳过你自己的作品。 - 你不能跳过你的对手的棋子,但你可以通过降落在他们身上来捕获他们。 - 如果一名玩家因被俘虏而减少为单件,则被俘虏的玩家获胜。 - 如果移动同时为移动的玩家和对手创造了胜利,则移动的玩家获胜。其实有不少 不寻常的残局,至少在理论上是可能的。

感谢任何帮助。

【问题讨论】:

  • 由于每个答案都建议使用 HTML,我只提一个 JTextArea 组件,或者对于更多格式选项,一个 JTextPane。

标签: java swing text jlabel multiline


【解决方案1】:

也许试试this :)

看起来很奇怪,但对我来说很好用。

【讨论】:

    【解决方案2】:

    您可以使用 HTML 格式:前缀 .setText() 与:

    <html>
    

    您将能够在您的 JLabel 中使用 HTML 代码。示例:

    label.setText("<html>First line<br>Second line");
    

    【讨论】:

      猜你喜欢
      • 2015-01-13
      • 2019-01-26
      • 2020-12-25
      • 2021-06-23
      • 1970-01-01
      • 2014-10-21
      • 1970-01-01
      • 2020-09-19
      相关资源
      最近更新 更多