Thus spake Alexander Potochkin:
> Hello Joel
> 
> If you just need to have a multiple line JLabel,
> you may be interested in following discussion:
> 
> http://www.coderanch.com/t/338648/Swing-AWT-SWT-JFace/java/Multiple-lines-JLa
> bel
> 
> Thanks
> alexp
>

I wrote a brief demo just to test what they suggest:

import javax.swing.*;

public class Test {
  public static final String loremIpsum = "Lorem ipsum dolor sit amet, 
consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et 
dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco 
laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in 
reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia 
deserunt mollit anim id est laborum.";

  public static void main(String[] arg) throws Exception {
    SwingUtilities.invokeLater(new Runnable() {
      public void run() {
        final JTextArea area = new JTextArea(loremIpsum, 20, 20);
        area.setEditable(false);
        area.setCursor(null);
        area.setOpaque(false);
        area.setFont(UIManager.getFont("Label.font"));
        area.setWrapStyleWord(true);
        area.setLineWrap(true);

        final JScrollPane scroll = new JScrollPane(
          area,
          JScrollPane.VERTICAL_SCROLLBAR_NEVER,
          JScrollPane.HORIZONTAL_SCROLLBAR_NEVER
        );

        scroll.getViewport().setOpaque(false);

        final JFrame frame = new JFrame();
        frame.add(scroll);
        frame.pack();
        frame.setVisible(true);
      }
    });
  }
}

My observation is that it is only by chance that this has the desired
behavior. The JTextArea ends up with the background color that a JLabel
would have because it just happens that in the LAF I'm using, JScrollPane
and JLabel have the same background color---but there is no necessary 
connection between them. There could just as easily be a LAF where
JScrollPane and JLabel do not share the same background color, and in
that case I'm right back where I started, as there's also no guarantee
that setBackground() will work.

So, I contend that this is still not a solution.

-- 
J.

Reply via email to