我目前正在使用Java中的JTable来显示大量文本信息,因此使用以下代码实现了文本换行:
closest_point = X(IDX,:);
然而,当实现这一点时,任何检测单击的单元格的尝试,只返回“-1”(越界)作为点击,我使用以下代码来检测点击位置:< / p>
MyCellRenderer mcr = new MyCellRenderer();
table.getColumnModel().getColumn(0).setCellRenderer(mcr);
class MyCellRenderer extends JTextArea implements TableCellRenderer {
public MyCellRenderer() {
setLineWrap(true);
setWrapStyleWord(true);
}
public Component getTableCellRendererComponent(JTable table, Object
value, boolean isSelected, boolean hasFocus, int row, int column) {
setText(value.toString());
setSize(table.getColumnModel().getColumn(column).getWidth(),
getPreferredSize().height);
if (table.getRowHeight(row) != getPreferredSize().height) {
table.setRowHeight(row, getPreferredSize().height);
}
return this;
}
}
在保持文本换行的同时,有没有办法可以对JTable中单击的单元格进行文本化处理?
答案 0 :(得分:3)
我目前的情况需要在[相关数据
旁边显示大量文字信息
而不是MouseListener
,向TableModel
添加TableModelListener
并更新相邻JTextComponent
的Document
模型。在此相关example中,TableModelListener
更新了相邻ListModel
的{{1}}。
或者,在表JList
中添加ListSelectionListener
并相应地更新相邻组件。在使用ListSelectionModel
的相关example中,SINGLE_SELECTION
更新了相邻的ListSelectionListener
。
或者,请查看此TablePopupEditor
,其中使用JButton
作为JButton
。按钮的TableCellEditor
会唤起包含ActionListener
的弹出模式JDialog
。
答案 1 :(得分:0)
以下代码给出了上述功能,(它忽略了所有包装单元格渲染器) table.addMouseListener(new java.awt.event.MouseAdapter(){
public void mouseClicked(java.awt.event.MouseEvent e) {
JTable target = (JTable)e.getSource();
int row = target.getSelectedRow();
int column = target.getSelectedColumn();
if((row >=0) && (column >=0)){
//Stuff
}
}
});