肯定不行啊,默认varchar的默认editor是textedit的
所以不可能显示多行的,所以你要显示的话
必须重新设置cell editor
voidsetDefaultEditor(Class columnClass, TableCellEditor editor)
\\Sets a default cell editor to be used if no editor has been set in a TableColumn.
voidsetDefaultRenderer(Class columnClass, TableCellRenderer renderer)
\\Sets a default cell renderer to be used if no renderer has been set in a
所以不可能显示多行的,所以你要显示的话
必须重新设置cell editor
voidsetDefaultEditor(Class columnClass, TableCellEditor editor)
\\Sets a default cell editor to be used if no editor has been set in a TableColumn.
voidsetDefaultRenderer(Class columnClass, TableCellRenderer renderer)
\\Sets a default cell renderer to be used if no renderer has been set in a
public class MultiLineCellRenderer extends JTextArea implements TableCellRenderer { public MultiLineCellRenderer() {
setLineWrap(true);
setWrapStyleWord(true);
setOpaque(true);
} public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
if (isSelected) {
setForeground(table.getSelectionForeground());
setBackground(table.getSelectionBackground());
} else {
setForeground(table.getForeground());
setBackground(table.getBackground());
}
setFont(table.getFont());
if (hasFocus) {
setBorder( UIManager.getBorder("Table.focusCellHighlightBorder") );
if (table.isCellEditable(row, column)) {
setForeground( UIManager.getColor("Table.focusCellForeground") );
setBackground( UIManager.getColor("Table.focusCellBackground") );
}
} else {
setBorder(new EmptyBorder(1, 2, 1, 2));
}
setText((value == null) ? "" : value.toString());
return this;
}
}
table.setDefaultRenderer(String.class, new MultiLineCellRenderer());
在windows下就不行
////////////////////
//javac Table.java
//java Table
////////////////////
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
import javax.swing.event.*;public class Table extends JFrame {
JTextArea txt = new JTextArea(4, 20);
// The TableModel controls all the data:
class DataModel extends AbstractTableModel {
Object[][] data = {
{"one", "two", "three", "four"},
{"five", "six", "seven", "eight"},
{"nine", "ten", "eleven", "twelve"},
};
// Prints data when table changes:
class TML implements TableModelListener {
public void tableChanged(TableModelEvent e){
txt.setText(""); // Clear it
for(int i = 0; i < data.length; i++) {
for(int j = 0; j < data[0].length; j++)
txt.append(data[i][j] + " ");
txt.append("\n");
}
}
}
public DataModel() {
addTableModelListener(new TML());
}
public int getColumnCount() {
return data[0].length;
}
public int getRowCount() {
return data.length;
}
public Object getValueAt(int row, int col) {
return data[row][col];
}
public void
setValueAt(Object val, int row, int col) {
data[row][col] = val;
// Indicate the change has happened:
fireTableDataChanged();
}
public boolean
isCellEditable(int row, int col) {
return true;
}
}
public Table() {
Container cp = getContentPane();
JTable table = new JTable(new DataModel());
cp.add(new JScrollPane(table));
cp.add(BorderLayout.SOUTH, txt);
}
public static void main(String[] args) {
JFrame fram=new Table();
fram.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
fram.setSize(350,200);
fram.setVisible(true);
}
} ///:~