我试图创建一个JTable,其行标题看起来就像一个列标题,我花了太多时间在它上面:/我的情况类似于这个问题:JTable行标题实现 ,也许这一个: 自定义jtable具有表格单元格标题颜色的cellrenderer
他们似乎还没有把我带到那里.我搜索了很多例子,但都缺乏.甚至没有任何带有行标题的表的例子来自Oracle/Sun. 看起来这种表不应该那么罕见.
这个只是格式化第一列,但它看起来不像列标题:http: //java-swing-tips.blogspot.com/2011/01/jtable-rowheader.html
这个似乎使用JList作为行标题,并且它有对齐问题(每行关闭+1像素),并且当我设置外观时看起来不那么好. http://www.java2s.com/Code/Java/Swing-Components/TableRowHeaderExample.htm
这个似乎是我需要使用的想法(行标题是一个单独的JTable,但随后作为行标题加载到JScrollPane),但我需要调整它到我的代码,然后确保行标题得到正确标题的外观和感觉.
http://www.chka.de/swing/table/row-headers/JTable.html
这就是我所做的减去最后一点.我尝试将表头的渲染器也作为行标题的渲染器.行标题/第一列现在是灰色而不是白色,就像它只是另一个数据列时一样,但仍然看起来不像列标题.这是正确的吗?或者我应该坚持将它作为主表中的常规列保留并使用它做其他事情?
所以这是我更新表的代码.此方法仅为列标题采用String数组,为行标题采用String数组,为主数据采用2D String数组.我有一个JTable dispTableRowHeader的行头和一个JTable dispTable主数据表.
private void updateDispTable(String[][] graphicalTable, String[] graphicalTableColumnHeader, String[] graphicalTableRowHeader) {
//set model for the main data table, put in data. Also prevent editing cells
dispTable.setModel(new javax.swing.table.DefaultTableModel(
graphicalTable,
graphicalTableColumnHeader
){
@Override
public boolean isCellEditable(int rowIndex, int mColIndex) {
return false;
}
});
//some mods for main data table
dispTable.getTableHeader().setReorderingAllowed(false);//Was also able to do this within NetBeans GUI Builder by doing Table …Run Code Online (Sandbox Code Playgroud) 我有一个JTable填充自定义DataModel(粘贴在下面),当我调用该populate()方法时,它似乎用重复数据填充表 - 每一行都反复填充相同的值.然而,仔细检查(通过简单地println()'数据'字段),数据模型没有错 - 它以我期望的格式保存正确的数据.是什么赋予了?
import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;
@SuppressWarnings("serial") // we don't expect this app to ever use serialized classes. EVER.
public class CollectionDataModel extends AbstractTableModel {
private ArrayList<ArrayList<String>> data;
public CollectionDataModel() {
data = new ArrayList<ArrayList<String>>();
}
@Override
public int getColumnCount() {
if(data.isEmpty()) return 0;
return data.get(0).size();
}
@Override
public int getRowCount() {
return data.size();
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
if(rowIndex > getRowCount()) return null;
if(columnIndex …Run Code Online (Sandbox Code Playgroud) 我正在尝试为特定目的创建一些特殊组件,在该组件上我需要绘制一个HTML字符串,这是一个示例代码:
public class MyComponent extends JComponent{
public MyComponent(){
super();
}
protected void paintComponent(Graphics g){
//some drawing operations...
g.drawString("<html><u>text to render</u></html>",10,10);
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,drawString方法似乎没有识别HTML格式,它愚蠢地绘制字符串就像它一样.
有没有办法让这项工作?