gpt4 book ai didi

java - 使用 Cell 渲染器时获取 Click JTable 的位置

转载 作者:行者123 更新时间:2023-11-29 05:05:45 25 4
gpt4 key购买 nike

我目前正在使用 Java 中的 JTable 来显示大量文本信息,并因此实现了文本换行,使用以下代码:

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;
}
}

然而,当这被实现时,任何检测被点击的单元格的尝试,都会简单地返回“-1”(越界)作为点击点,我使用以下代码来检测点击位置:

table.addMouseListener(new java.awt.event.MouseAdapter() {

public void mouseClicked(java.awt.event.MouseEvent e) {
int row = table.rowAtPoint( e.getPoint() );
int column = table.columnAtPoint( e.getPoint() );
}
});
}

有什么方法可以在保持文本换行的同时向在 JTable 中单击的单元格发送文本?

最佳答案

My current situation requires a large amount of text information to be displayed next to [the] relevant data

代替 MouseListener,添加 TableModelListener到您的 TableModel 并更新相邻 JTextComponentDocument 模型.在这个相关example , TableModelListener 更新相邻 JListListModel

或者,添加一个 ListSelectionListener到您的表的 ListSelectionModel 并相应地更新相邻的组件。在这个相关example使用 SINGLE_SELECTIONListSelectionListener 更新相邻的 JButton

或者,看看这个 TablePopupEditor ,它使用 JButton 作为 TableCellEditor。按钮的 ActionListener 调用包含 JTextArea 的弹出模式 JDialog

关于java - 使用 Cell 渲染器时获取 Click JTable 的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30415858/

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