3
運行下面的代碼Java 6和Java 8,並查看結果。換行符在java 6的visibleEditorRect範圍內工作,但在java 8上,字符串溢出了界限。有沒有解決這個問題的方法。JTextpane不尊重與java的visibleEditorRect 8
import java.awt.Rectangle;
import javax.swing.JFrame;
import javax.swing.JTextPane;
import javax.swing.plaf.basic.BasicTextPaneUI;
public class TextPaneBug {
public static void main(String[] args) {
JFrame f = new JFrame() ;
JTextPane text = new BugTextPane() ;
f.add(text);
text.setText("mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm");
f.setExtendedState(JFrame.MAXIMIZED_BOTH);
f.setVisible(true);
}
static class BugTextPane extends JTextPane
{
public BugTextPane() {
setUI(new BasicTextPaneUI(){
@Override
protected Rectangle getVisibleEditorRect() {
Rectangle r = super.getVisibleEditorRect() ;
Rectangle newr = new Rectangle(r.width/2 - 300 , r.height/2 - 300 , 600 ,600) ;
return newr;
}
protected void paintSafely(java.awt.Graphics g) {
super.paintSafely(g);
Rectangle r = getVisibleEditorRect() ;
g.drawRect(r.x,r.y,r.width,r.height);
};
}
);
}
}
}
爲什麼覆蓋可見矩形非常重要?我想你使用一些技巧來實現一些行爲。 – StanislavL
我們有一個帶有分頁和基於visibleEditorRect的分頁邏輯的文本編輯器。所以我們的編輯器不像預期的那樣使用java 8。 – mfidan
因爲我可以看到問題是改變換行。它可以是http://stackoverflow.com/questions/8666727/wrap-long-words-in-jtextpane-java-7這裏。 – StanislavL