JTextArea菜单项的行号

时间:2014-04-04 10:06:10

标签: java swing jtextarea

我正在尝试使用Java的AWT和SWING概念开发项目。

因为我有一个名为" Viewline Numbers的菜单项(即我们为此选择了JCheckBox)"。当我选中复选框时,它会在另一个文档中显示行号。但是,我想使用文档像Editplus Editor一样显示行号。

这是我的代码

   private void ViewLineNumbersActionPerformed(java.awt.event.ActionEvent evt) {  
            lines = new JTextArea("");
    lines.setBackground(Color.LIGHT_GRAY);
    lines.setEditable(false);
            lines.setSize(10,10);
    tx.getDocument().addDocumentListener(new DocumentListener(){
        public String getText(){
            int caretPosition = tx.getDocument().getLength();
                          //  System.out.println("caretPosition"+ caretPosition);
            Element root = tx.getDocument().getDefaultRootElement();
                          //  System.out.println("root"+ root);
            String text = "1" + System.getProperty("line.separator");

                            int c=root.getElementIndex( caretPosition );
                          //  System.out.println(c);
            for(int i = 2; i < c + 2; i++){
                text += i + System.getProperty("line.separator");
            }
            return text;
        }
        @Override
        public void `enter code here`changedUpdate(DocumentEvent de) {
            lines.setText(getText());
        }
        @Override
        public void insertUpdate(DocumentEvent de) {
            lines.setText(getText());
        }

        @Override
        public void removeUpdate(DocumentEvent de) {
            lines.setText(getText());
        }
    });


            sp.getViewport().add(tx);
           // sp.setViewportView(tx);

    sp.setRowHeaderView(lines);
  }

1 个答案:

答案 0 :(得分:0)

  

但是,我想使用与Editplus编辑器一样的文档来显示行号。

我非常怀疑行号是文档的一部分。它们可能看似显示为同一组件的一部分,但我确信当您复制/粘贴文本时,您不会包含行号。

假设我的上述陈述是正确的,您可以尝试使用Text Component Line Number。由于此组件显示在滚动窗格的行标题中,因此您应该能够根据复选框切换组件的可见性。