如何添加到以前的JLabel

时间:2017-05-03 19:23:19

标签: java swing jlabel

我已经更改了代码,因此解释起来可能更简单,现在是我试图解决的初始问题。我首先创建了一个JLabel,然后我尝试通过添加一个新行然后添加更多文本来更新其中包含的文本。我看了类似的问题,但解决方案没有帮助。这是一个时间表申请。

private void createAndShowGUI(String [] lessons) {

...

Container pane = frame.getContentPane();
GridBagConstraints c = new GridBagConstraints();
...

label1 = new JLabel("");
    label1.setFont(new Font("Lucida Grande", Font.PLAIN, 10));
    c.fill = GridBagConstraints.HORIZONTAL;
    c.weightx = 0.0;
    c.gridwidth = 3;
    c.gridx = 2;
    c.gridy = 2;
    pane.add(label1, c);

for(int i=0; i<lessons.length; i++) {
        String format = lessons[i];
        String [] t = format.split(",");
        if (t[0].equals("1")) {
            if (t[1].equals("1")) {
                label1.setText(label1.getText() + "lecture: " + t[3] + " unit: " + t[4] + " room: " + t[2]);

...

现在,如果我不更改其他地方写的变量,我的输入保持不变。我目前的输入是课程[0] =&#34; 1,1,1,taqi,数学,bob&#34;,课程[1] =&#34; 1,1,2,john,physics,jim&#34 ;还有其他几个,但它们并不相关,因为它们最终都处于相同的情况。

在label1.setText中,我试图在 label1.getText()&#34;讲座:&#34; 之间添加一个新行。因此,当我运行我的代码时,我有一个讲座,单元和房间,下面我有另一个讲座,单元和房间。现在为了更清楚地了解我的输出,t [0]是讲座的日子,t [1]是讲座的时间。我想在同一时期和不同的房间里展示多个课程。

2 个答案:

答案 0 :(得分:1)

JLabel无法识别换行符。文本显示在一行中,新行字符将被忽略。

您可以在JLabel中使用HTML:

label.setText("<html>line1<br>line2</html");

或者您可以使用JTextArea并附加多行文本:

textArea.append("\nline2");

答案 1 :(得分:0)

我没有正确使用HTML代码。我发现我必须将"<html>"保留在文本输入的最开头(即初始输入到JPanel中),即使我稍后添加了更多文本,并且"</html>"就在字符串的结尾。 "<br>"可以在字符串中的任何位置使用。

修改后的代码:

JLabel label1 = new JLabel("<html>");

...

for(int i=0; i<lessons.length; i++) {
        String format = lessons[i];
        String [] t = format.split(",");
        if (t[0].equals("1")) {
            if (t[1].equals("1")) {
                label1.setText(label1.getText() + "lecture: " + t[3] + " unit: " + t[4] + " room: " + t[2] + "<br>");

                ...
            }
        }
} 
label1.setText(label1.getText() + "</html>");