相关疑难解决方法(0)

Swing HTML drawString

我正在尝试为特定目的创建一些特殊组件,在该组件上我需要绘制一个HTML字符串,这是一个示例代码:

 public class MyComponent extends JComponent{
     public MyComponent(){
        super();
     }

     protected void paintComponent(Graphics g){
        //some drawing operations...
        g.drawString("<html><u>text to render</u></html>",10,10);
     }
 }
Run Code Online (Sandbox Code Playgroud)

不幸的是,drawString方法似乎没有识别HTML格式,它愚蠢地绘制字符串就像它一样.

有没有办法让这项工作?

html java swing jcomponent graphics2d

10
推荐指数
6
解决办法
8619
查看次数

Swing:JScrollPane导致渲染问题

有时(并非总是)在滚动我的JScrollPane栏时,一些组件(通常是像JLabel这样的文本)不能正确重新绘制,它们最终只是部分渲染.

我不知道为什么会这样.我已经尝试在AdjustmentListener中调用paint(),但这似乎没有帮助.

有任何想法吗?

编辑:组件的初始化

    panel = new JPanel();
    ImageIcon img = new ImageIcon("editor.png");
    setIconImage(img.getImage());
    initComponents();

    final JScrollPane pane = new JScrollPane(panel);
    this.setContentPane(pane);
    //pane.setLayout(new ScrollPaneLayout());
    //pane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
    Dimension dim = panel.getSize();
    dim.height = dim.height - 100;
    pane.setSize(dim);
    this.setSize(dim);
    AdjustmentListener hListener = new AdjustmentListener() {
        @Override
        public void adjustmentValueChanged(AdjustmentEvent e) {
            repaint();
            for(Component c : panel.getComponents())
                c.repaint();
            for(Component c : pane.getComponents())
                c.repaint();
            panel.repaint();
            panel.revalidate();
            pane.repaint();
            pane.revalidate();
        }
    };
    pane.getVerticalScrollBar().addAdjustmentListener(hListener);
    panel.setVisible(true);
    pane.setVisible(true);
Run Code Online (Sandbox Code Playgroud)

java swing jscrollpane

0
推荐指数
1
解决办法
1056
查看次数

标签 统计

java ×2

swing ×2

graphics2d ×1

html ×1

jcomponent ×1

jscrollpane ×1