我用数据库中的数据填充JTable.我已经将AbstractTableModel子类化并传递了对JTable的引用.但是,如何在数据库中提取列名并在JTable中将它们设置为"标题"?
提前致谢.
我已经有了这个,在控制台中显示了头名,但我在GUI中没有列.我已将JTable附加到选项卡式窗格中的选项卡.
@Override
public String getColumnName(int column) {
try {
System.out.println(dbhandler.getMetaData().getColumnName(column + 1));
return dbhandler.getMetaData().getColumnName(column + 1);
} catch (SQLException e) {
e.printStackTrace();
return "";
}
}
Run Code Online (Sandbox Code Playgroud) 我使用以下代码:
public final class TableCellRendererCenter extends DefaultTableCellRenderer {
public static final TableCellRenderer INSTANCE
= new TableCellRendererCenter();
protected TableCellRendererCenter() {
// Calling super
super();
this.setHorizontalAlignment(SwingConstants.CENTER);
}
}
Run Code Online (Sandbox Code Playgroud)
在JTable列上:
TableColumnModel retrMod = ChartItemsTable.getColumnModel();
TableColumn retrCol = retrMod.getColumn(2);
retrCol.setHeaderRenderer(TableCellRendererCenter.INSTANCE);
retrCol.setCellRenderer(TableCellRendererCenter.INSTANCE);
Run Code Online (Sandbox Code Playgroud)
并且外观与其他列标题不再匹配:

为什么?我该如何解决这个问题?
编辑
似乎NetBeans正在使用DefaultTableCellHeaderRenderer它来自package sun.swing.table;
我到处读到我不应该使用太阳包.Grrrr ......这没有用!
编辑2
0verbose的建议产生以下结果:

解
根据eugener的建议,我更新了我的代码如下:
public final class TableCellRendererCenter extends DefaultTableCellRenderer {
@Override
public Component getTableCellRendererComponent(
JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int column) {
// returns component used for …Run Code Online (Sandbox Code Playgroud) 我想知道如何增加JTable Swing中标题列的字体大小?
我正在使用Netbeans.
最好的祝福.
丹尼尔
我使用setCursor()方法为JTable设置游标.
但是该游标仅适用于表的行(datapart).
如何为同一个表的Header设置游标,以便我可以通过双击它的(列的)右边缘来调整列的大小?
请查看以下代码
import java.awt.*;
import javax.swing.JTable;
import javax.swing.*;
public class Table extends JFrame
{
private JTable table;
public Table()
{
String[] columnNames = {"first name","last name","address"};
Object[][]data = {{"John","Kane","NY"},{"Nayomi","Writz","NY"}};
table = new JTable(data, columnNames);
getContentPane().add(table);
this.pack();
this.setVisible(true);
}
public static void main(String[]args)
{
new Table();
}
}
Run Code Online (Sandbox Code Playgroud)
我之前没有使用过JTable,所以这是我的第一次尝试.在这里,它没有显示列名,只显示数据.这是为什么?请帮忙!
这是我的代码:
public class DownloadMainView extends JFrame{
private ArrayList<DownloadItem> downloadList = new ArrayList<DownloadItem>();
private JMenuBar menubar = new JMenuBar();
private JMenu m_task = new JMenu("Tasks");
private JMenu m_tool = new JMenu("Tools");
private JMenu m_help = new JMenu("Help");
private JMenuItem mi_add = new JMenuItem("Add");
private JMenuItem mi_exit = new JMenuItem("Exit");
private JMenuItem mi_options = new JMenuItem("Options");
private JMenuItem mi_help = new JMenuItem("Help");
private JMenuItem mi_about = new JMenuItem("About");
private JTree categoryTree = new JTree();
private JTable contentTable = new JTable(new Object[][]{},new Object[]{"No.","Filename","URL","Status","Size","Added …Run Code Online (Sandbox Code Playgroud) 
我刚刚开始与JTable。这是我的表示例。添加行按钮可将行添加到表中。我想为此表创建行标题。我该如何实现?
有人可以帮我吗?
示例表的代码是:
package test;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.table.*;
import test.InsertRows.CellEditor;
public class SampleTable extends JFrame {
JTable table;
JPanel panel;
DefaultTableModel dataModel;
public SampleTable () {
super("My Table Example");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
onInit();
}
void onInit()
{
JButton b=new JButton("Add Row");
b.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e)
{
// TODO Auto-generated method stub
insertNewRow();
}
});
panel = new JPanel(new BorderLayout());
String[] columnNames = {
"Name",
"OID", …Run Code Online (Sandbox Code Playgroud) 我试图让我的JTable标题的背景有一个渐变.
使用代码可以正常工作:
String[] colName = new String[] { "#", "Location", "Name" ,"Source", "System", "Hits", "Current", "Time" };
Object[][] products = new Object[][] {
};
dtm = new DefaultTableModel(products, colName) {
@Override
public boolean isCellEditable(int row, int column) {
//all cells false
return false;
}
};
table = new JTable( dtm );
table.setRowHeight(32);
table.getTableHeader().setReorderingAllowed(false);
table.setDefaultRenderer(Object.class, new VisitorRenderer());
table.setFont(new java.awt.Font("Tahoma", Font.PLAIN, 12));
table.getColumnModel().getColumn(0).setMinWidth(5);
table.getColumnModel().getColumn(1).setMinWidth(50);
table.getColumnModel().getColumn(2).setMinWidth(5);
table.getColumnModel().getColumn(3).setMinWidth(5);
table.getColumnModel().getColumn(4).setMinWidth(5);
table.getColumnModel().getColumn(5).setMinWidth(3);
table.getColumnModel().getColumn(6).setMinWidth(230);
table.getColumnModel().getColumn(7).setMinWidth(3);
final JTableHeader header = table.getTableHeader();
header.setPreferredSize(new Dimension(100, 37));
header.setDefaultRenderer(new DefaultTableCellHeaderRenderer() …Run Code Online (Sandbox Code Playgroud) 我怎样才能展示我的Jtable?

目前我只知道创造这种jtable

下面是我的代码
Object rowData1[][] =
{
{ "","","","" },
{ "","","","" },
{ "","","","" },
{ "","","","" }
};
Object columnNames1[] = { "HEADER 1", "HEADER 2", "HEADER 3", "HEADER 4" };
JTable table1 = new JTable(rowData1, columnNames1);
table1.getColumnModel().getColumn(0).setPreferredWidth(120);
JScrollPane scrollPane1 = new JScrollPane(table1);
Run Code Online (Sandbox Code Playgroud)