Hi,

I have made a Paint Shop in which we can draw lines .

Now I am trying to set a Label of each Line Drawn the problem I am
facing is that
the Text of Lable is Clipped .
Here is an examplary code. Which Draws the Label in clock wise and anti
clock wise direction
at the specified angle.

Please help me out

***********
import java.awt.*;
                          import java.util.*;
                          import java.awt.event.*;
                          import javax.swing.*;
                          import javax.swing.border.*;

                          import javax.swing.plaf.basic.*;
                          import java.awt.geom.*;


                          // This code uses Graphics2D which is
supported only on Java 2

                          public class Main
                          {
                                  public static void main(String[] args)

                                  {
                                          JFrame frame = new
JFrame("Main");
                                          frame.addWindowListener( new
WindowAdapter() {
                                                  public void
windowClosing(WindowEvent e)
                                                  {
                                                          Window win =
e.getWindow();

win.setVisible(false);
                                                          win.dispose();


System.exit(0);
                                                  }
                                          } );


frame.getContentPane().setLayout( new FlowLayout() );

                                          ImageIcon icon = new
ImageIcon( "dukeWave.gif" ) ;
                                          JLabel l = new JLabel(
"Rotated anti-clockwise", icon, SwingConstants.LEFT );
                                          l.setUI( new
VerticalLabelUI(false) );
                                          l.setBorder( new
EtchedBorder() );
                                          frame.getContentPane().add( l
);

                                          l = new JLabel( "Rotated
Clockwise", icon, SwingConstants.LEFT );
                          //              l.setHorizontalTextPosition(
SwingConstants.LEFT );
                                          l.setUI( new
VerticalLabelUI(true) );
                                          l.setBorder( new
EtchedBorder() );
                                          frame.getContentPane().add( l
);
                                          frame.getContentPane().add(
new JButton( "Button" ) );
                                          frame.pack();
                                          frame.show();


                                  }
                          }



                          class VerticalLabelUI extends BasicLabelUI
                          {
                                  static {
                                          labelUI = new
VerticalLabelUI(false);
                                  }

                                  protected boolean clockwise;
                                  VerticalLabelUI( boolean clockwise )
                                  {
                                          super();
                                          this.clockwise = clockwise;
                                  }


                              public Dimension
getPreferredSize(JComponent c)
                              {
                                  Dimension dim =
super.getPreferredSize(c);
                                  return new Dimension( dim.height,
dim.width );
                              }

                              private static Rectangle paintIconR = new
Rectangle();
                              private static Rectangle paintTextR = new
Rectangle();
                              private static Rectangle paintViewR = new
Rectangle();
                              private static Insets paintViewInsets =
new Insets(0, 0, 0, 0);

                                  public void paint(Graphics g,
JComponent c)
                              {


                                  JLabel label = (JLabel)c;
                                  String text = label.getText();
                                  Icon icon = (label.isEnabled()) ?
label.getIcon() : label.getDisabledIcon();

                                  if ((icon == null) && (text == null))
{
                                      return;
                                  }

                                  FontMetrics fm = g.getFontMetrics();
                                  paintViewInsets =
c.getInsets(paintViewInsets);

                                  paintViewR.x = paintViewInsets.left;
                                  paintViewR.y = paintViewInsets.top;

                                  // Use inverted height & width
                                  paintViewR.height = c.getWidth() -
(paintViewInsets.left + paintViewInsets.right);
                                  paintViewR.width = c.getHeight() -
(paintViewInsets.top + paintViewInsets.bottom);

                                  paintIconR.x = paintIconR.y =
paintIconR.width = paintIconR.height = 0;
                                  paintTextR.x = paintTextR.y =
paintTextR.width = paintTextR.height = 0;

                                  String clippedText =
                                      layoutCL(label, fm, text, icon,
paintViewR, paintIconR, paintTextR);

                                  Graphics2D g2 = (Graphics2D) g;
                                  AffineTransform tr =
g2.getTransform();
                                  if( clockwise )
                                  {
                                          g2.rotate( Math.PI / 2 );
                                          g2.translate( 0, -
c.getWidth() );
                                  }
                                  else
                                  {
                                          g2.rotate( - Math.PI / 2 );
                                          g2.translate( - c.getHeight(),
0 );
                                  }

                                  if (icon != null) {
                                      icon.paintIcon(c, g, paintIconR.x,
paintIconR.y);
                                  }

                                  if (text != null) {
                                      int textX = paintTextR.x;
                                      int textY = paintTextR.y +
fm.getAscent();

                                      if (label.isEnabled()) {
                                          paintEnabledText(label, g,
clippedText, textX, textY);
                                      }
                                      else {
                                          paintDisabledText(label, g,
clippedText, textX, textY);
                                      }
                                  }


                                  g2.setTransform( tr );
                              }
                          }

===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff JAVA2D-INTEREST".  For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".

Reply via email to