2016-02-05 4 views
0

Это мой стол прямо сейчас:Изменение заголовка в JTable

enter image description here

Это код, который я могу изменить название столбца:

table.getColumnModel().getColumn(0).setHeaderValue("Lecturersssss"); 

Но заголовок столбца будет не измените, пока я наведите указатель мыши на заголовок столбца Lecturer.

Даже если я использую table.repaint() после этого кода, он не изменится. Вы, ребята, знаете, как я могу решить эту проблему?

Спасибо.

+0

Вы используете 'MouseEvent' для этого? –

+0

нет, у меня есть этот код внутри actionlistener кнопки –

ответ

1
JTableHeader header= table.getTableHeader(); 
TableColumnModel colMod = header.getColumnModel(); 
TableColumn tabCol = colMod.getColumn(0); 
tabCol.setHeaderValue("Lecturersssss"); 
header.repaint(); 
+0

Это должно сработать. Это, вероятно, даже не нужно перерисовывать. –

+0

У меня все еще такая же проблема –

+0

У меня грязный код: http://pastebin.com/phFGAaXV Я не знаю, может ли это помочь или нет –

2

Чалита в предложение должны работы. Вот короткая демонстрационная программа проверки работоспособности. Нажмите кнопку, чтобы изменить текст заголовка столбца. Работы на моей среде не менее ...

import java.awt.*; 
import java.awt.event.*; 
import java.util.*; 
import javax.swing.*; 
import javax.swing.table.*; 

public class TTT extends JFrame { 
    JTable t; 
    public TTT() { 
     setLayout(new BorderLayout()); 
     Object[] cols= new Object[]{"Col1","Col2","Col3"}; 
     Object[][] vals= new Object[][]{{5,6,7}}; 
     t = new JTable(vals,cols); 
     add(new JScrollPane(t),BorderLayout.CENTER); 
     JButton b = new JButton("Change Column Header"); 
     b.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent arg0) { 
       Random r = new Random(); 
       Enumeration<TableColumn> e = t.getColumnModel().getColumns(); 
       while(e.hasMoreElements()) 
        e.nextElement().setHeaderValue("Col"+Math.abs(r.nextInt())); 
       t.getTableHeader().repaint(); 
      } 
     }); 
     b.setPreferredSize(new Dimension(1,25)); 
     add(b,BorderLayout.SOUTH); 
     setSize(500,150); 
    } 
    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       new TTT().setVisible(true); 
      } 
     }); 
    } 
} 
+0

спасибо за ваш пример, а не table.getTableHeader(). Repaint()); Я использовал table.repaint(); проблема решена –

+1

@NathanDrake Добро пожаловать! –

Смежные вопросы