在JTable中显示JLabel

Ank*_*agi 1 java swing jtable jlabel

我试图通过覆盖这样的方法来显示JLabel内部JTablegetColumnClass

        JLabel myLabel = new JLabel("ok");
        String[] columnNames = {"","",""};
        Object[][] data =
            {
                {myLabel, myLabel, myLabel},
                {myLabel, myLabel, myLabel},
                {myLabel, myLabel, myLabel},
            };


        DefaultTableModel model = new DefaultTableModel(data, columnNames);
        table = new JTable( model )
        {
            public Class getColumnClass(int column)
            {
                    return JLabel.class;
            }
        };
Run Code Online (Sandbox Code Playgroud)

但相反它显示这样的东西(哈希码?)

javax.swing.JLabel[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=8388608,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,horizontalAlignment=LEADING,horizontalTextPosition=TRAILING,iconTextGap=4,labelFor=,text=ok,verticalAlignment=CENTER,verticalTextPosition=CENTER]
Run Code Online (Sandbox Code Playgroud)

有什么问题,我该如何解决这个问题?

编辑

如果使用相同的逻辑来显示一个代码,代码工作正常 ImageIcon

        ImageIcon myLabel = new ImageIcon(path);  // ignore the variable name
Run Code Online (Sandbox Code Playgroud)

并改为 getColumnClass

            public Class getColumnClass(int column)
            {
                    return ImageIcon.class;
            }
Run Code Online (Sandbox Code Playgroud)

mKo*_*bel 5

.

- Boolean — rendered with a check box.
- Number — rendered by a right-aligned label.
- Double, Float — same as Number, but the object-to-text translation is performed 
  by a NumberFormat instance (using the default number format for the current locale).
- Date — rendered by a label, with the object-to-text translation performed 
  by a DateFormat instance (using a short style for the date and time).
- ImageIcon, Icon — rendered by a centered label.
- Object — rendered by a label that displays the object's string value.
Run Code Online (Sandbox Code Playgroud)
  • Renderer默认返回JLabel/JComponent

  • 阅读Oracle教程如何使用表格来处理代码示例