我的界面上有一个JButton,点击它就将数据显示到JTable上,现在数据能够显示上去,就是没有列名,为什么呀?高手们帮助看看,3Q
private JTable getTable() {
if (table == null) {
table = new JTable();
DefaultTableModel dft = new MyTable();
dft.addColumn("ID");
dft.addColumn("性别");
dft.addColumn("日期");
table.setModel(dft);
table.setDefaultEditor(SexEnum.class, new DefaultCellEditor(new JComboBox(SexEnum.values())));
table.setDefaultRenderer(SexEnum.class, new DefaultTableCellRenderer());
table.setRowHeight(20);
table.getTableHeader().setReorderingAllowed(false);
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
}
return table;
} class MyTable extends DefaultTableModel
{
private static final long serialVersionUID = 1L;
public Class<?> getColumnClass(int columnIndex)
{
if(columnIndex == 1)
return SexEnum.class;
else
return Object.class;
}
public boolean isCellEditable(int row, int column)
{
return column == 1;
}
}
Object[] rowData = new Object[]{"1","男","2001-09-09"};
private JButton getBtnShow()
{
if (btnShow == null)
{
btnShow = new JButton("show");
btnShow.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
DefaultTableModel dft = (DefaultTableModel) getTable().getModel();
dft.addRow(rowData);
dft.addRow(rowData);
dft.addRow(rowData);
}
});
btnShow.setBounds(37, 25, 93, 23);
}
return btnShow;
}
private JTable getTable() {
if (table == null) {
table = new JTable();
DefaultTableModel dft = new MyTable();
dft.addColumn("ID");
dft.addColumn("性别");
dft.addColumn("日期");
table.setModel(dft);
table.setDefaultEditor(SexEnum.class, new DefaultCellEditor(new JComboBox(SexEnum.values())));
table.setDefaultRenderer(SexEnum.class, new DefaultTableCellRenderer());
table.setRowHeight(20);
table.getTableHeader().setReorderingAllowed(false);
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
}
return table;
} class MyTable extends DefaultTableModel
{
private static final long serialVersionUID = 1L;
public Class<?> getColumnClass(int columnIndex)
{
if(columnIndex == 1)
return SexEnum.class;
else
return Object.class;
}
public boolean isCellEditable(int row, int column)
{
return column == 1;
}
}
Object[] rowData = new Object[]{"1","男","2001-09-09"};
private JButton getBtnShow()
{
if (btnShow == null)
{
btnShow = new JButton("show");
btnShow.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
DefaultTableModel dft = (DefaultTableModel) getTable().getModel();
dft.addRow(rowData);
dft.addRow(rowData);
dft.addRow(rowData);
}
});
btnShow.setBounds(37, 25, 93, 23);
}
return btnShow;
}
JTable t = new JTable();
Vector<Object> header = new Vector<Object>() ; //标题
Vector<Vector<Object>> table = new Vector<Vector<Object>>();//表格内容
Vector<Object> content = new Vector<Object>();//每一条的内容
header.addElement("id");
header.addElement("性别");
header.addElement("日期");
table.addElement(content) ;
DefaultTableModel det = new DefaultTableModel(header , table);
}
{
private static final long serialVersionUID = 1L;
private JPanel contentPane;
private JScrollPane scrollPane;
private JTable table;
private JButton btnShow;
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
try
{
JTableAddJComboBox frame = new JTableAddJComboBox();
frame.setVisible(true);
} catch (Exception e)
{
e.printStackTrace();
}
}
});
} /**
* Create the frame.
*/
public JTableAddJComboBox()
{
initialize();
}
private void initialize() {
setTitle("table contain comboBox");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
contentPane.add(getScrollPane());
contentPane.add(getBtnShow());
} private JScrollPane getScrollPane() {
if (scrollPane == null) {
scrollPane = new JScrollPane();
scrollPane.setBounds(57, 72, 288, 180);
scrollPane.setColumnHeaderView(getTable());
}
return scrollPane;
}
private JTable getTable() {
if (table == null) {
table = new JTable();
DefaultTableModel dft = new MyTable();
dft.addColumn("ID");
dft.addColumn("性别");
dft.addColumn("日期");
table.setModel(dft);
table.setDefaultEditor(SexEnum.class, new DefaultCellEditor(new JComboBox(SexEnum.values())));
table.setDefaultRenderer(SexEnum.class, new DefaultTableCellRenderer());
table.setRowHeight(20);
table.getTableHeader().setReorderingAllowed(false);
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
}
return table;
} class MyTable extends DefaultTableModel
{
private static final long serialVersionUID = 1L;
public Class<?> getColumnClass(int columnIndex)
{
if(columnIndex == 1)
return SexEnum.class;
else
return Object.class;
}
public boolean isCellEditable(int row, int column)
{
return column == 1;
}
}
Object[] rowData = new Object[]{"1","男","2001-09-09"};
private JButton getBtnShow()
{
if (btnShow == null)
{
btnShow = new JButton("show");
btnShow.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
DefaultTableModel dft = (DefaultTableModel) getTable().getModel();
dft.addRow(rowData);
dft.addRow(rowData);
dft.addRow(rowData);
}
});
btnShow.setBounds(37, 25, 93, 23);
}
return btnShow;
}
}
你原来写的代码整体设计和逻辑有问题,导致了表头没有出来,你研究下给你的代码就行了import javax.swing.*;
import javax.swing.border.EmptyBorder;
import javax.swing.table.*;
import java.awt.*;
import java.awt.event.*;public class JTableAddJComboBox extends JFrame
{
private static final long serialVersionUID = 1L;
private Container contentPane;
private JScrollPane scrollPane;
private JTable table;
private JButton btnShow;
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
try
{
JTableAddJComboBox frame = new JTableAddJComboBox();
frame.setVisible(true);
} catch (Exception e)
{
e.printStackTrace();
}
}
});
} /**
* Create the frame.
*/
public JTableAddJComboBox()
{
initialize();
}
private void initialize() {
setTitle("table contain comboBox");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
// contentPane = new JPanel();
contentPane = this.getContentPane();
// contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
// setContentPane(contentPane);
contentPane.setLayout(null);
contentPane.add(getScrollPane());
contentPane.add(getBtnShow());
} private JScrollPane getScrollPane() {
DefaultTableModel dft = (DefaultTableModel) getTable().getModel();
dft.addRow(rowData);
dft.addRow(rowData);
dft.addRow(rowData);
if (scrollPane == null) {
scrollPane = new JScrollPane(table);
scrollPane.setBounds(57, 72, 288, 180);
}
return scrollPane;
}
private JTable getTable() {
if (table == null) {
table = new JTable();
DefaultTableModel dft = new MyTable();
dft.addColumn("ID");
dft.addColumn("性别");
dft.addColumn("日期");
table.setModel(dft);
// table.setDefaultEditor(SexEnum.class, new DefaultCellEditor(new JComboBox(SexEnum.values())));
// table.setDefaultRenderer(SexEnum.class, new DefaultTableCellRenderer());
table.setRowHeight(20);
table.getTableHeader().setReorderingAllowed(false);
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
}
return table;
} class MyTable extends DefaultTableModel
{
private static final long serialVersionUID = 1L; public Class<?> getColumnClass(int columnIndex)
{
if(columnIndex == 1)
// return SexEnum.class;
return String.class;
else
return Object.class;
} public boolean isCellEditable(int row, int column)
{
return column == 1;
}
}
Object[] rowData = new Object[]{"1","男","2001-09-09"};
private JButton getBtnShow()
{
if (btnShow == null)
{
btnShow = new JButton("show");
btnShow.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
DefaultTableModel dft = (DefaultTableModel) getTable().getModel();
dft.addRow(rowData);
dft.addRow(rowData);
dft.addRow(rowData); }
});
btnShow.setBounds(37, 25, 93, 23);
}
return btnShow;
}
}
public enum SexEnum
{
男,女;
}用这个类就是想让jtable里某列能显示下拉列表
2、scrollPane.setViewportView(getTable());
1是我之前写的,应该是2这种写法,我是通过直接拖拽过去的,怎么会出现1那种情况了呢,具体还是eclipse的问题,有待研究,谢谢各位了!