gpt4 book ai didi

java - JTextpane 不尊重 visibleEditorRect 与 java 8

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:59:36 32 4
gpt4 key购买 nike

在 java 6 和 java 8 中运行下面的代码,并查看结果。在 Java 6 上,换行符在 visibleEditorRect 的边界内工作,但在 Java 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);
};
}

);
}
}
}

最佳答案

我通过将中断行为恢复为 Java 6 功能解决了这个问题。通过在 LabelView 的扩展中从 Java 6 复制来覆盖 getBreakWeightgetBreakSpot 方法就足够了。

关于java - JTextpane 不尊重 visibleEditorRect 与 java 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30257949/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com