一个选中文本的问题,不解!

q1531 2008-10-22 07:52:22

import java.awt.BorderLayout;
import java.util.Vector;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JScrollPane;

public class Test extends JFrame {
JEditorPane editor = new JEditorPane();
JScrollPane scrollPane = new JScrollPane(editor);
Vector<Integer> lineNumber = new Vector<Integer>();
JList lineNumberPane= new JList(lineNumber);

public Test() {

//scrollPane.setRowHeaderView(lineNumberPane);//如果取消注释,那么显示的效果讲改变,
//原本设置的选中会被取消掉.为什么?


editor.setText("12432412#$\tsdgsdfgdsfg\r\nadg34adgdafgsdfgsdg");

editor.setSelectionStart(1);
editor.setSelectionEnd(7);


this.add(scrollPane,BorderLayout.CENTER);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
}

public static void main(String[] args) {
Test jtfct = new Test();
jtfct.setBounds(100, 100, 800,600);
jtfct.setVisible(true);

}
}



scrollPane.setRowHeaderView(lineNumberPane);这行如果取消掉注释效果将改变,原本设置的选中被见了,为什么?
...全文
71 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
gtlang78 2008-10-24
  • 打赏
  • 举报
回复
加上lineNumberPane的时候, lineNumberPane首先获得了输入焦点,文本组件 JTextArea, JEditorPane在没有焦点的情况下显示高亮选中的文本
可以加一句 lineNumberPane.setFocusable(false); 来禁止lineNumberPane获得焦点
或者参考这个bug报告里的方法使文本组件在没有焦点的情况下也显示高亮文本
http://bugs.sun.com/bugdatabase/view_bug.do;jsessionid=2ae4ce31560e0b2187864997dbd89?bug_id=4273908
horizonlyhw 2008-10-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 gtlang78 的回复:]
加上lineNumberPane的时候, lineNumberPane首先获得了输入焦点,文本组件 JTextArea, JEditorPane在没有焦点的情况下显示高亮选中的文本
可以加一句 lineNumberPane.setFocusable(false); 来禁止lineNumberPane获得焦点
或者参考这个bug报告里的方法使文本组件在没有焦点的情况下也显示高亮文本
http://bugs.sun.com/bugdatabase/view_bug.do;jsessionid=2ae4ce31560e0b2187864997dbd89?bug_id=4273908
[/Quote]

哦 明白了 謝謝~~
horizonlyhw 2008-10-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 showde123 的回复:]
引用 1 楼 lihan6415151528 的回复:
JScrollPane 也可以有一个列标题和一个行标题。这二者都是 JViewport 对象,可用 setRowHeaderView 和 setColumnHeaderView 指定。

got it.
[/Quote]


………………

这个都好理解 关键是 那个选中为啥消失的事~~~~
showde123 2008-10-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lihan6415151528 的回复:]
JScrollPane 也可以有一个列标题和一个行标题。这二者都是 JViewport 对象,可用 setRowHeaderView 和 setColumnHeaderView 指定。
[/Quote]
got it.
q1531 2008-10-22
  • 打赏
  • 举报
回复
怎么会这样呢?
horizonlyhw 2008-10-22
  • 打赏
  • 举报
回复

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Rectangle;
import java.util.Vector;

import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JScrollPane;

public class test123 extends JFrame {


public test123() {
this.setLayout(null);
JEditorPane editor = new JEditorPane();

Vector<Integer> lineNumber = new Vector<Integer>();
lineNumber.add(1);
lineNumber.add(2);
lineNumber.add(3);
lineNumber.add(4);

JList lineNumberPane= new JList(lineNumber);
JScrollPane scrollPane = new JScrollPane(lineNumberPane);
scrollPane.setRowHeaderView(editor);
editor.setText("12432412#$\tsdgsdfgdsfg\r\nadg34adgdafgsdfgsdg");
editor.setSelectionStart(1);
editor.setSelectionEnd(10);

scrollPane.setBounds(new Rectangle(10,10,200,100));
this.add(scrollPane);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
}

public static void main(String[] args) {
test123 jtfct = new test123();
jtfct.setBounds(100, 100, 800,600);
jtfct.setVisible(true);

}
}



是挺奇怪的 沒弄懂 我這樣就能顯示 但是反過來就不行了~~
lihan6415151528 2008-10-22
  • 打赏
  • 举报
回复
JScrollPane 也可以有一个列标题和一个行标题。这二者都是 JViewport 对象,可用 setRowHeaderView 和 setColumnHeaderView 指定。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧