Java文本后面的垂直线?就像编辑器中指示页面结束位置的行一样
我目前有一个程序,它通过一个代码文件,将所有注释向右对齐(100个字符),使它们都在一列中,并将代码输出到JList中(因此代码的每一行都是列表中的一项)。我试图做的是在后台添加一条垂直线,当输出调整后的代码时,所有注释都从这里开始(类似于netbeans中指示页面结束位置的那一行)。我觉得使用JList不可能做到这一点,有人能肯定地确认吗?这在java中可能吗?如果可能的话,我应该怎么做呢?我不完全确定您在做什么,但在我看来,您可以通过在JList中添加一个类似于“------------”的元素来获得一个不错的解决方案,该元素将显示分页符。我不确定你是不是在找这个 试一下封闭面板;在右侧使用非零值Java文本后面的垂直线?就像编辑器中指示页面结束位置的行一样,java,swing,Java,Swing,我目前有一个程序,它通过一个代码文件,将所有注释向右对齐(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方法。这些有点不合适吗?我想他想要垂直,而不是水平,直线。。。否则这将是一个解决方案是的,行必须是垂直的,加上我不喜欢像那样实际编辑文本,因为一旦注释被重新对齐,代码将被保存。我试图显示的行纯粹是为了让我的程序的输出看起来更好/更容易看到所有注释是否正确对齐伟大的答案,比我组合的临时解决方案好得多,谢谢!