gpt4 book ai didi

java - 如何在 jtable 的单元格内添加按钮并赋予它 Action

转载 作者:行者123 更新时间:2023-11-30 09:21:45 31 4
gpt4 key购买 nike

我知道之前已经回答过这个问题,但考虑到我还是个新手,我无法想出一种方法来执行操作并阻止单元格编辑,我已经尝试了几种方法,但是当我点击它,它编辑单元格而不是按下按钮,我知道为了避免单元格编辑我应该创建一个抽象表并覆盖此方法:

public boolean isCellEditable(int row, int col) {
//Note that the data/cell address is constant,
//no matter where the cell appears onscreen.
if (col < 3) {
return false;
} else {
return true;
}
}

但是我使用默认的 JTable,所以这是我用于面板和单元格渲染器的代码:

class PlusMinusCellRenderer extends JPanel implements TableCellRenderer {

public Component getTableCellRendererComponent(
final JTable table, Object value,
boolean isSelected, boolean hasFocus,
int row, int column) {


if(column < 3)
{
JLabel campo = new JLabel(value.toString());


this.add(campo);

}
if(column > 2)
{

//this is a button
this.add(botaoteste);





materialtable.revalidate();
materialtable.repaint();


}
return this;

}

这是我用来从 sql 检索数据到 Jtable 的代码(我自定义了 DefaultJTable 代码)

String[] columnNames={"teste","abc","def"};                 
Object[][] data = new Object[1][4];
if(createConnection())
{
try {
Statement statemt = conLogin.createStatement();
ResultSet rs = statemt.executeQuery("SELECT * FROM Materiais");
//ResultSet rs = statemt.executeQuery("SELECT * FROM Materiais");
rsmtdata = rs.getMetaData();

//int columns = rsmtdata.getColumnCount();
columnNames = new String[]{rsmtdata.getColumnName(1),rsmtdata.getColumnName(2),rsmtdata.getColumnName(3),"Deletar"};
if(rs.next())
{
data[0][0] = rs.getString(1);
data[0][1] = rs.getString(2);
data[0][2] = rs.getString(3);
data[0][3] = new Boolean(false);
}
while (rs.next())
{

Object[][] temp = new Object[data.length+1][4];
for(int i=0;i < data.length;i++)
{
for(int j = 0;j < 4;j++)
{
temp[i][j] = data[i][j];
}

}
temp[data.length][0] = rs.getString(1);
temp[data.length][1] = rs.getString(2);
temp[data.length][2] = rs.getString(3);
temp[data.length][3] = new Boolean(false);
data = temp;



}
materialtable = new javax.swing.JTable(data, columnNames);
materialtable = new javax.swing.JTable(data, columnNames){
public TableCellRenderer getCellRenderer( int row, int column ) {
return new PlusMinusCellRenderer();
}
};

materialtable.setRowHeight( 32 );

} catch (SQLException ex) {
Logger.getLogger(ProfessorForm.class.getName()).log(Level.SEVERE, null, ex);
}

}

//Create the scroll pane and add the table to it.
materialtable.setBackground(new java.awt.Color(153, 255, 51));

materialtable.setSelectionBackground(new java.awt.Color(255, 255, 51));

materialtable.setSelectionForeground(new java.awt.Color(255, 102, 0));



jScrollPane3.setViewportView(materialtable);

因此要根据此线程在表 i 内呈现按钮: Adding Buttons inside cell of JTable along with data?

我的问题很直接,我怎样才能禁用行编辑(就像 isCellEditable() 方法的用法一样)并对按钮进行操作?非常感谢这里的任何帮助,请考虑我还是新手,所以需要详细信息或 sample !亲切的问候,罗慕洛·罗梅罗

最佳答案

您需要渲染器以及编辑器,如example所示.请参阅如何使用表:编辑器和呈现器 details .切线地,您应该覆盖 TableModel 中的方法 isCellEditable() 而不是扩展 JTable

关于java - 如何在 jtable 的单元格内添加按钮并赋予它 Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16799624/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com