怎么把list中的数据显示在jtable中,并且实现换行(因为list中的数据正常是好多行的),有代码最好~

如题... 如题 展开
 我来答
444054296
2016-01-08 · 超过36用户采纳过TA的回答
知道小有建树答主
回答量:106
采纳率:0%
帮助的人:68.9万
展开全部
/********************************
我也是新开始学的,例子比较简陋。大概思想就是:单元格里面渲染JScrollPane,其上有个JTextArea,可以实现换行。
具体例子如下:
****************************/
import java.awt.Component;
import java.util.ArrayList;
import java.util.EventObject;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.event.CellEditorListener;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;


public class ListToJTable {
public static void main(String[] args) {
ArrayList<String> list=new ArrayList<String>();
list.add("1\r\n23\n4\n5");
list.add("abc");
JFrame f=new JFrame("ListToJTable Test");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(400, 300);
JTable t=new JTable(0,1);
DefaultTableModel dataModel=(DefaultTableModel) t.getModel();
int count=dataModel.getRowCount();
while(count>0){
dataModel.removeRow(0);
count--;
}
for (int i = 0; i < list.size(); i++) {
Object[] ob=new Object[]{list.get(i)};
dataModel.addRow(ob);
}
t.setModel(dataModel);
f.add(t);
f.setVisible(true);
t.setDefaultRenderer(Object.class, new TableCellRenderer(){

@Override
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
JScrollPane sc=new JScrollPane();
JTextArea area=new JTextArea(value.toString());
sc.setViewportView(area);
return sc;
}

});
t.setDefaultEditor(Object.class, new TableCellEditor(){

@Override
public Component getTableCellEditorComponent(JTable table,
Object value, boolean isSelected, int row, int column) {
JScrollPane sc=new JScrollPane();
JTextArea area=new JTextArea(value.toString());
sc.setViewportView(area);
return sc;
}

@Override
public void addCellEditorListener(CellEditorListener l) {

}

@Override
public void cancelCellEditing() {

}

@Override
public Object getCellEditorValue() {
return null;
}

@Override
public boolean isCellEditable(EventObject anEvent) {
return true;
}

@Override
public void removeCellEditorListener(CellEditorListener l) {

}

@Override
public boolean shouldSelectCell(EventObject anEvent) {
return false;
}

@Override
public boolean stopCellEditing() {
return false;
}

});
t.setRowHeight(40);
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式