gpt4 book ai didi

java - TableCellRenderer 奇怪的行为 java

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

我正在尝试在 jtable 上实现自定义 TableCellRenderer。该表设置为 100 行和 100 列。该表应包含指定字体的所有字形。我的问题是,当表中的值不完整时,它会在第一列中放置最后一个值,直到它到达表的底部。下面是我的自定义渲染器的代码和具有奇怪行为的屏幕截图。我们将不胜感激。

enter image description here

public class FontRenderer extends JLabel implements TableCellRenderer
{
Font desired_font;
Object prec_value;

public FontRenderer(Font f)
{
desired_font = f;
}

public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int rowIndex, int vColIndex)
{


setOpaque(true);
setHorizontalAlignment(SwingConstants.CENTER);
setBackground(new Color(255, 255, 255));
if (isSelected)
{
if (value == null)
{
setText("");
}
else
{
setText(value.toString());
}
setFont(desired_font);
setBackground(new Color(56, 195, 254));
}
if (value == null)
{
setText("");
}
else
{
if(value==null)
table.setValueAt(null, rowIndex, vColIndex);
else
setText(value.toString());
//table.setValueAt(value.toString(), rowIndex, vColIndex);

}
setFont(desired_font);

return this;
}
}

编辑:这是我填充表格的代码。

while (cnt_i < 100) {
while (cnt_j < 100) {
if (my_fnt.canDisplay((char) unicode_char) && glyph_count <= total_glyphs) {
jTable1.setValueAt((char) unicode_char, cnt_i, cnt_j);
cnt_j++;
if (glyph_count == total_glyphs) {
break;
}
glyph_count++;
}
unicode_char++;
}
cnt_i++;
cnt_j = 0;
}

解决了。全部。这就是我填充表格的方式。以下代码有变化:

while (cnt_i < 100) {
while (cnt_j < 100) {
if (my_fnt.canDisplay((char) unicode_char) && glyph_count <= total_glyphs) {
if (glyph_count == total_glyphs) {
break;
}
else {
jTable1.setValueAt((char) unicode_char, cnt_i, cnt_j);
cnt_j++;
glyph_count++;
}
}
unicode_char++;
}
cnt_i++;
cnt_j = 0;
}

最佳答案

1) 关于 Unicode 字符,我认为这不是 Renderer 的工作

2) 设置JTable#Font对于JTable而不是为 Renderer

传递参数

3) 如果你想在运行时改变一堆数据,使用prepareRenderer

4) 最重要的是查看您如何填充JTable 的 数据并为Font(s)

定义/设置

关于java - TableCellRenderer 奇怪的行为 java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8968240/

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