Java文本后面的垂直线?就像编辑器中指示页面结束位置的行一样

Java文本后面的垂直线?就像编辑器中指示页面结束位置的行一样,java,swing,Java,Swing,我目前有一个程序,它通过一个代码文件,将所有注释向右对齐(100个字符),使它们都在一列中,并将代码输出到JList中(因此代码的每一行都是列表中的一项)。我试图做的是在后台添加一条垂直线,当输出调整后的代码时,所有注释都从这里开始(类似于netbeans中指示页面结束位置的那一行)。我觉得使用JList不可能做到这一点,有人能肯定地确认吗?这在java中可能吗?如果可能的话,我应该怎么做呢?我不完全确定您在做什么,但在我看来,您可以通过在JList中添加一个类似于“------------”的

我目前有一个程序,它通过一个代码文件,将所有注释向右对齐(100个字符),使它们都在一列中,并将代码输出到JList中(因此代码的每一行都是列表中的一项)。我试图做的是在后台添加一条垂直线,当输出调整后的代码时,所有注释都从这里开始(类似于netbeans中指示页面结束位置的那一行)。我觉得使用JList不可能做到这一点,有人能肯定地确认吗?这在java中可能吗?如果可能的话,我应该怎么做呢?

我不完全确定您在做什么,但在我看来,您可以通过在JList中添加一个类似于“------------”的元素来获得一个不错的解决方案,该元素将显示分页符。我不确定你是不是在找这个

试一下封闭面板;在右侧使用非零值

panel.setBorder(BorderFactory.createMatteBorder(0, 0, 0, 1, Color.red));

尝试使用ListUI在背景中画一条线:

public static void main(String[] args) {
    JDialog dialog = new JDialog();

    JList list = new JList();
    list.setUI(new LinedListUI());

    dialog.add(new JScrollPane(list));


    dialog.setPreferredSize(new Dimension(300, 300));
    dialog.pack();
    dialog.setLocationRelativeTo(null);
    dialog.setVisible(true);
}


static class LinedListUI extends BasicListUI {

    public void paint(Graphics g, JComponent c) {

        super.paint(g, c);
        g.setColor(Color.gray);
        int x = (int) (c.getWidth() * 0.8);
        g.drawLine(x, 0, x, c.getHeight());
    }
}
将行添加为html。 下面我使用了ApacheCommonsStringEscapeutils

final String COMMENT_BEGIN =
    "<span style='width: 3px; background-color: #00cc00'></span>";
line = "<html>" + StringEscapeUtils.escapeHtml(line)
    .replaceFirst("//", COMMENT_BEGIN + "$0");
最后的字符串注释\u开始=
"";
line=”“+StringEscapeUtils.escapeHtml(行)
.replaceFirst(“/”,COMMENT_BEGIN+“$0”);

同样,您也可以简单地将注释设置为绿色左右。

如果您使用
JLayeredPane
,在底部使用
JList
,在
JList
上方的一层中使用行,或许可以覆盖JList的paintComponent方法。这些有点不合适吗?我想他想要垂直,而不是水平,直线。。。否则这将是一个解决方案是的,行必须是垂直的,加上我不喜欢像那样实际编辑文本,因为一旦注释被重新对齐,代码将被保存。我试图显示的行纯粹是为了让我的程序的输出看起来更好/更容易看到所有注释是否正确对齐伟大的答案,比我组合的临时解决方案好得多,谢谢!