- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下 TableCellRenderer
(不是 DefaultTableCellRenderer
),它允许我在 JTable
的单元格中跳过行:
import java.awt.Color;
import java.awt.Component;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.UIManager;
import javax.swing.table.TableCellRenderer;
public class MyCellRenderer extends JTextArea implements TableCellRenderer {
Color highlightBackground = (Color) UIManager.get("Table.selectionBackground");
public MyCellRenderer() {
setLineWrap(true);
setWrapStyleWord(true);
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
setText((String) value); //or something in value, like value.getNote()...
setSize(table.getColumnModel().getColumn(column).getWidth(), getPreferredSize().height);
if (table.getRowHeight(row) != getPreferredSize().height) {
table.setRowHeight(row, getPreferredSize().height);
}
if (table.isRowSelected(row)) {
this.setBackground(highlightBackground);
} else {
this.setBackground(Color.WHITE);
}
return this;
}
}
我只想更改此渲染器的水平对齐方式。 (这意味着单元格的文本会在它们的中心或右侧,现在是左侧)。
下面是我如何使用这个 TableCellRenderer :
Table.getColumnModel().getColumn(1).setCellRenderer(new MyCellRenderer());
最佳答案
我已经找到答案了,谢谢TT。对于提示,我只是删除了自定义构造函数及其换行符,扩展了 JTextPane,并添加了几行代码。对于需要允许跳过行和设置单元格水平对齐的类的任何人,这里是代码:
import java.awt.Color;
import java.awt.Component;
import javax.swing.JTable;
import javax.swing.JTextPane;
import javax.swing.UIManager;
import javax.swing.table.TableCellRenderer;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyledDocument;
public class MyCellRenderer extends JTextPane implements TableCellRenderer {
Color highlightBackground = (Color) UIManager.get("Table.selectionBackground");
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
setText((String) value);//or something in value, like value.getNote()...
setSize(table.getColumnModel().getColumn(column).getWidth(),
getPreferredSize().height);
if (table.getRowHeight(row) != getPreferredSize().height) {
table.setRowHeight(row, getPreferredSize().height);
}
if (table.isRowSelected(row)) {
this.setBackground(highlightBackground);
} else {
this.setBackground(Color.WHITE);
}
//Added lines
StyledDocument doc = this.getStyledDocument();
SimpleAttributeSet center = new SimpleAttributeSet();
StyleConstants.setAlignment(center, StyleConstants.ALIGN_CENTER);
doc.setParagraphAttributes(0, doc.getLength(), center, false);
//Added Lines
return this;
}
}
关于java - 在不使用 DefaultTableCellRenderer 的情况下设置 JTable 列水平对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34931898/
我想知道除了 JCheckbox 和 JComboBox 之外,DefaultTableCellRenderer 支持哪些组件... 最佳答案 DefaultTableCellRenderer 本身不
我正在尝试更改 JTable 第三行单元格的颜色(如果它们有值)。我读到,执行此操作的一个好方法是使用表格单元格渲染器。然而,它似乎什么也没做!这是我的渲染器代码: public class Rend
我几周来一直在尝试通过使用 RGBtoHSV 更改背景颜色来使 JTable 中的 Cell 闪烁,我是能够使用我在网上搜索到的方法来刷新单行,但当涉及到多行时,它似乎不起作用。 我尝试创建自定义渲染
我在编辑 DefaultTableCellRenderer 时遇到问题。 我只想右对齐表格中的第二列。但是,右下方的代码对齐所有列,而不仅仅是第二列! 谁能看出我哪里出错了? for (int i=0
我正在尝试通过指定我自己的表格单元格渲染器向特定的 JTable 列添加一个图标,如下所示 (based on parts of this tutorial): public class MyTabl
我一直在尝试学习 JTable 渲染器,并且几乎已经确定了我正在寻找的行为,除了最后一部分。我想删除 JTable 默认为 boolean 值呈现的复选框并呈现一个简单的字符串,但我无法解决这里的问题
我正在尝试从 ArrayList 填充我的表格,并使用自定义的 DefaultTableCellRenderer 来渲染它: public class CustomRender extends Def
我正在尝试使用 DefaultTableCellRenderer 来格式化 JTable 中的列。例如:如果用户输入: 20140914 格式如下: 2014-09-14 我的代码如下: //
我有以下 TableCellRenderer(不是 DefaultTableCellRenderer),它允许我在 JTable 的单元格中跳过行: import java.awt.Color; im
我正在使用 netbeans 及其图形用户界面构建器来创建桌面应用程序。为了对我的 jTables 中的特殊单元格进行着色,我已经根据示例代码实现了自定义 DefaultTableCellRender
我更新到 SwingX-1.6.2 但发现了 1.6 中没有出现的问题。 JXTable 单元格的颜色看起来很奇怪。我使用带有备用条纹 (HighlighterFactory.createAltern
我有一个无法摆脱的问题。 如你所知,我对使用 JTables 还很陌生,所以答案可能很简单,但我找不到解决方案:/ 所以,我有一个使用 AbstractTableModel 的 JTable,它覆盖了
我是一名优秀的程序员,十分优秀!