Java 如何使文本环绕JLabel?

Java 如何使文本环绕JLabel?,java,swing,text,jlabel,multiline,Java,Swing,Text,Jlabel,Multiline,这似乎是一个愚蠢的问题,但我做不到;我使用扫描仪读取文件,然后使用while循环将文本输入字符串,然后将其放入JLabel。但是,文本显示在一条很长的水平线上,如何使所有文本都像原始文本文件中的段落一样正常显示? 守则: class howToPlay implements ActionListener{ @Override public void actionPerformed(ActionEvent e) { JFrame htp = new JFrame(); htp.s

这似乎是一个愚蠢的问题,但我做不到;我使用扫描仪读取文件,然后使用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格式:prefix.setText()和:


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

label.setText("<html>First line<br>Second line");
label.setText(“第一行
第二行”);
因为每个答案都建议使用HTML,所以我只想提到一个JTextArea组件,或者更多的格式化选项,一个JTextPane。
label.setText("<html>First line<br>Second line");