我有JTable
,其中表的最后一列用于添加2个按钮。以下是我JTable
的格式。
以下是我的代码
private class ViewLawyersDisplayData extends ComponentAdapter
{
@Override
public void componentShown(ComponentEvent e)
{
dbConnector = new DBHandler();
dbConnector.makeConnection();
ResultSet rs = dbConnector.selectAllLawyerDetails();
if(rs==null)
{
JOptionPane.showMessageDialog(null,"The table is empty");
}
else
{
try
{
while(rs.next())
{
int id = rs.getInt("lawyer_id");
String name = rs.getString("Name");
String address = rs.getString("Address");
String email = rs.getString("Email");
String phone = rs.getString("Phone");
JButton update = new JButton("Update");
JButton delete = new JButton("Delete");
JPanel btnPanel = new JPanel();
btnPanel.setLayout(new FlowLayout());
btnPanel.add(update);
btnPanel.add(delete);
Object[]row = {id,name,address,email,phone,btnPanel};
DefaultTableModel model = (DefaultTableModel) viewLawyersTable.getModel();
model.addRow(row);
}
}
catch(SQLException sqlE)
{
JOptionPane.showMessageDialog(null,sqlE.getLocalizedMessage());
}
}
}
}
但是我无法将按钮添加到最终列中。它不显示按钮,而是在列中显示一些错误文本。以下是它向我显示的错误文本。
javax.swing.JPanel[,0,0,0x0,invalid,layout=java.awt.FlowLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
如何解决此问题?
答案 0 :(得分:2)
您正在混合模型和视图。请注意,该模型是要显示的数据。在id
的情况下,它是一个整数值,在name
的情况下,它是一个字符串。您的模型中还有其他几个字符串。
您看到的输出不是错误消息。这只是在toString()
上调用JPanel
的结果,因为您将其视为模型的一部分而不是可显示的视图。
由于您的JPanel
应该显示UI组件,因此它是视图。您需要阅读有关JTable的更多信息,以了解如何自定义每列中的视图。
答案 1 :(得分:2)
您无法将Swing组件添加到表中,因为表不用于显示实际组件。
有关为表格列中的按钮提供渲染器/编辑器的解决方案,请参阅Table Button Column。