我正在尝试使用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);
}
答案 0 :(得分:0)
但是,我想使用与Editplus编辑器一样的文档来显示行号。
我非常怀疑行号是文档的一部分。它们可能看似显示为同一组件的一部分,但我确信当您复制/粘贴文本时,您不会包含行号。
假设我的上述陈述是正确的,您可以尝试使用Text Component Line Number。由于此组件显示在滚动窗格的行标题中,因此您应该能够根据复选框切换组件的可见性。