JTable,JTextArea或JEditorPane突出显示代码行?

Ash*_*Ash 6 java swing jtable jtextcomponent

更新:

我发现在这个答案部分解决这里,通过添加以下代码:

class CustomRenderer extends DefaultTableCellRenderer 
{
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
    {
        Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
        c.setBackground(new java.awt.Color(255, 72, 72));
        return c;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后将它传递给我的JTable对象:

jTable2.setDefaultRenderer(String.class, new CustomRenderer());
Run Code Online (Sandbox Code Playgroud)

这工作正常,现在表行为红色:

Psuedocode面板

我现在唯一需要知道的是如何将着色限制为单行和单个单元格.

进一步研究后,我需要一个setCellRender()方法,以便我可以在特定单元格上设置自定义渲染,但此方法不存在.


题:

我想创建一个逐步伪代码执行的可视组件.

为此,我创建了一个JTable,现在我正在寻找突出显示每一行(或单元格,因为只有一列)来显示正在执行哪一行的方法.

我在下面的最终GUI中包含了一个模型.正如你在Pseudocode面板中看到的那样,我突出了最后一行.

请忽略它们与问题没有严格关联的箭头.

线框

我已经开始在Netbeans Matisse中实现这个模型(这是3种算法中的1种).但是我不知道如何突出code line 1JTable组件中的单行.

使用不同类型的组件会更容易吗?

稍后我还需要能够重新着色单个单元格,如模型的表格JPanel中所示.如何实施?

部分实施

mKo*_*bel 3

1)使用JTextPane支持样式文本,您有三种选择

  • 使用HighLighter

  • 使用Html格式化文本(当前形式的 Java6 支持 <=Html3.2并减少了对 css 的支持,当然与 相比Html5

  • 将两个 am 选项结合在一起

  • 编写自己的 EditorKit 或 HtmlEditorKit (感谢 @stryba)

2) 对于JTable将所需的值传递给prepareRenderer()而不是实现getTableCellRendererComponent()

3) 如果JSlider的值是可修改的(来自另一个 JComponent),则查找BoundedRangeModel