Swing 如何在JLabel中禁用换行,即使对于<;html>;文本

Swing 如何在JLabel中禁用换行,即使对于<;html>;文本,swing,jtable,jlabel,tablecellrenderer,Swing,Jtable,Jlabel,Tablecellrenderer,每当JLabel在标记中包含文本时,它都会自动应用换行(似乎是这样)。我的要求是,无论标签包含什么文本,都应始终禁用换行。由于遗留原因,我无法在渲染器中使用JTextArea 您可以在不希望包装的HTML内容周围使用标记 简单的非HTML内容永远不会包装在JLabel中 以下是一个例子: public static void main ( String[] args ) { JFrame frame = new JFrame (); frame.setLayout ( new B

每当JLabel在标记中包含文本时,它都会自动应用换行(似乎是这样)。我的要求是,无论标签包含什么文本,都应始终禁用换行。由于遗留原因,我无法在渲染器中使用JTextArea

  • 您可以在不希望包装的HTML内容周围使用
    标记
  • 简单的非HTML内容永远不会包装在JLabel中
  • 以下是一个例子:

    public static void main ( String[] args )
    {
        JFrame frame = new JFrame ();
        frame.setLayout ( new BorderLayout () );
    
        final String html = "<html><body><nobr>CMV Antigenemia Stat X 2.0 dose(s)</nobr></body></html>";
        final String simple = "<html><body>CMV Antigenemia Stat X 2.0 dose(s)</body></html>";
    
        JTable table1 = new JTable ( new String[][]{ { html, html, html, html, html } }, new String[]{ html, html, html, html, html } );
        table1.setRowHeight ( 50 );
        frame.add ( table1, BorderLayout.NORTH );
    
        JTable table2 = new JTable ( new String[][]{ { simple, simple, simple, simple, simple } },
                new String[]{ simple, simple, simple, simple, simple } );
        table2.setRowHeight ( 50 );
        frame.add ( table2, BorderLayout.CENTER );
    
        frame.pack ();
        frame.setLocationRelativeTo ( null );
        frame.setVisible ( true );
    }
    
    publicstaticvoidmain(字符串[]args)
    {
    JFrame=newjframe();
    frame.setLayout(新的BorderLayout());
    最终字符串html=“CMV抗基因血症状态X 2.0剂量”;
    最终字符串simple=“CMV抗基因血症状态X 2.0剂量”;
    JTable table1=新的JTable(新字符串[]{{html,html,html,html}},新字符串[]{html,html,html,html});
    表1.1设置行高(50);
    frame.add(表1,BorderLayout.NORTH);
    JTable table2=新的JTable(新字符串[][{{simple,simple,simple,simple}},
    新字符串[]{simple,simple,simple,simple,simple});
    表2.2设置行高(50);
    frame.add(表2,BorderLayout.CENTER);
    frame.pack();
    frame.setLocationRelativeTo(空);
    frame.setVisible(true);
    }
    

    如您所见-在第一个表中,HTML内容没有被包装。

    AFAIK,
    JLabel
    始终是单行的,除非它使用HTML渲染。同意,但即使对于HTML渲染,我也不想换行,可能有一些HTML标记可能有帮助吗?尝试了这个,但没有成功。我正在把这个标签添加到JTable中——基本上我的渲染器组件是JLabel。到底是什么不起作用?您是如何在HTML代码周围插入
    标记的?请在您的问题中添加一些简短描述问题的代码。我在渲染器的GetTableCellRenderComponent方法中获得以下文本-“CMV Antigenemia Stat X 2.0剂量”。由于遗留原因,此处返回的组件必须是JLabel(这个问题可以通过textarea解决。@niteen22您做错了什么-检查我在回答中添加的代码。您在上一条评论中发布的HTML内容没有包装(也不应该包装)-只需尝试调整框架大小。那么问题出在哪里?