2014-10-29 2 views
0

я наткнулась JTable: сегодня, как хороший способ представления информации, извлеченная из базы данных, например, как в следующем коде:создание нередактируемого JTable отображается в JFrame

import java.awt.BorderLayout; 
import javax.swing.JFrame; 
import javax.swing.JScrollPane; 
import javax.swing.JTable; 

public class JTableCreatingDemo { 
    public static void main(String args[]) { 
    JFrame frame = new JFrame(); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    Object rowData[][] = { { "Row1-Column1", "Row1-Column2", "Row1-Column3" }, 
     { "Row2-Column1", "Row2-Column2", "Row2-Column3" } }; 
    Object columnNames[] = { "Column One", "Column Two", "Column Three" }; 
    JTable table = new JTable(rowData, columnNames); 

    JScrollPane scrollPane = new JScrollPane(table); 
    frame.add(scrollPane, BorderLayout.CENTER); 
    frame.setSize(300, 150); 
    frame.setVisible(true); 

    } 
} 

единственного, что я не Мне не нравится, что если я нажимаю на записи таблицы, я могу их изменить. Мне это не нравится. Мне было интересно, есть ли способ предотвратить это?

ответ

2

Вы можете использовать AbstractTableModel, но это может быть больше работы, чем вы готовы, вместо этого, используйте DefaultTableModel и переопределить это isCellEditable метод возвращал false

Например ...

DefaultTableModel model = new DefaultTableModel(rowData, columnNames) { 
    @Override 
    public boolean isCellEditable(int row, int column) { 
     return false; 
    } 
}; 
JTable table = new JTable(model); 

См. How to Use Tables для получения более подробной информации