基本上,我有一个JTable包含具有右对齐单元格但左对齐标题的列,这看起来非常糟糕.我想右对齐这些列的标题而不改变标题的"外观和感觉".
谢谢
标题解释了这个问题.我怎么能轻松做到这一点?
甚至我也阅读并测试了@kleopatra的答案
关于super.getTableCellRendererComponent(...)
必须在返回之前的最后一行代码行,我无法通过这些建议编写正确的渲染器,因为我只能这样工作
JLabel
是为Borders,HorizontalAlignment和Foreground添加的,特别是Background通过使用Component而不是JLabel
(在这里不太重要)引起了一些非句子
来自SSCCE
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
public class SelectedTableHeader {
private JFrame frame = new JFrame("Table Demo");
private JTableHeader header;
private Object selectedColumn = null;
private String[] columnNames = {"String", "Integer", "Float", "Double", "Locale & Double", "Boolean"};
private Object[][] data = {
{"aaa", new Integer(12), new Float(12.15), new Double(100.05), new Double(12.05), true},
{"bbb", new Integer(5), new Float(7.154), new Double(6.1555), new Double(417.55), false},
{"CCC", new Integer(92), …
Run Code Online (Sandbox Code Playgroud) 我在我的应用程序中使用JTable并希望有2行标题,类似于:
这甚至是可能还是我必须做别的事?如果是这样,什么?使用Supertitle-titleA,SuperTitle-titleB将占用太多空间并使信息冗余.
我搜索了很多并得到了这个Q的答案.但是他们中的许多人都提到了404错误的链接.我想像这样制作表格:
java中有没有这方面的方法?
我试过了:
table.getTableHeader().setBackground(Color.BLACK);
Run Code Online (Sandbox Code Playgroud)
不行.
编辑:此代码仅在我的项目中不起作用.适用于其他项目.我可能已经更改了一个可以阻止颜色变化的属性.或者NetBeans有一些保留默认颜色的属性.我注意到了别的什么.我项目中标题的颜色以不同的方式闪耀.在颜色变化有效的示例中,我看到了不同的图形.
编辑2:别的.我注意到按钮也不会改变颜色.必须是通用的东西.希望这可以帮助.不幸的是,SSCCE在这种情况下无法工作,因为我无法重现问题.我肯定使用正确的组件名称.
我有以下JTable使用表模型:
http://s17.postimage.org/7zfh3l4lr/Screen_Shot_2012_03_10_at_15_11_31.png
而不是使用,A,B,C,D等我如何定义自己的表名.这是我的代码
这是我的表模型的代码,框架从该表模型创建一个对象并将其显示在JFrame中.
package uk.ac.kcl.inf._4css1pra.spreadsheet;
import java.awt.Dimension;
import java.util.HashMap;
import java.util.Map;
import javax.swing.table.AbstractTableModel;
/**
* @author imdad
*
*/
public class Spreadsheet extends AbstractTableModel{
private Map data = new HashMap();
public int getColumnCount()
{
return 7;
}
/* (non-Javadoc)
* @see javax.swing.table.TableModel#getRowCount()
*/
public int getRowCount()
{
return 250;
}
public Object getValueAt(int row, int col)
{
return data.get(new Dimension(row, col));
}
public void setValueAt(Object data, int row, int col)
{
Dimension coord = new Dimension(row, col);
this.data.put(coord, data); …
Run Code Online (Sandbox Code Playgroud)