Java窍门技巧:JLabel公告栏文字滚动效果

        首先要掌握个概念:串在计算机屏幕中所占像素比方说取个JLabel里面Text所占宽和高思路方法如下: (主要用到FontMetrics类)
     import java.awt.FontMetrics;
  import javax.swing.JLabel;
  JLabel label =  JLabel("test Label ");
  FontMetrics metrics = label.getFontMetrics(label.getFont);
   textH = metrics.getHeight; //只和字体有关
   textW = metrics.Width(label.getText); //



  通常情况下个空格占3个像素

  具体代码如下:

  Test.java


     import java.awt.BorderLayout;
  import java.awt.Color;
  import java.awt.Dimension;
  import java.awt.FontMetrics;
  import java.awt.event.ComponentAdapter;
  import java.awt.event.ComponentEvent;
  import javax.swing.JFrame;
  import javax.swing.JLabel;
  import javax.swing.JPanel;
  public  Test {
  private JFrame frame;
  private String scrolledText;
  private String str = "滚动文字 Demo";
  /** *//**
  * Launch the application
  * @param args
  */
  public  void (String args) {
  try {
  Test window =  Test;
  window.frame.Visible(true);
  } catch (Exception e) {
  e.prStackTrace;
  }
  }
  /** *//**
  * Create the application
  */
  public Test {
  initialize;
  }
  /** *//**
  * Initialize the contents of the frame
  */
  private void initialize {
  frame =  JFrame;
  frame.Bounds(100, 100, 500, 375);
  frame.DefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  final JPanel panel =  JPanel;
  panel.Background(Color.WHITE);
  panel.Layout( BorderLayout);
  frame.getContentPane.add(panel, BorderLayout.NORTH);
  final JLabel label =  JLabel;
  label.Text("New JLabel");
  panel.add(label);
  label_scrolledText(label);
  // 当窗体变化时要重新对label滚动文字进行设置
  frame.addComponentListener( ComponentAdapter {
  public void componentResized(ComponentEvent arg0) {
  label_scrolledText(label);
  }
  });
  }
  /** *//**
  * 滚动文字
  * @param label
  */
  public void label_scrolledText(JLabel label) {
  this.scrolledText = this.str;
  label.Text(scrolledText);
  FontMetrics metrics = label.getFontMetrics(label.getFont);
   textW = metrics.Width(label.getText);
  Dimension frameSize = frame.getSize;
  for ( i = 1; i <= (frameSize.width - textW) / 3 - 3; i)
  scrolledText  " ";
  label.Text(scrolledText);
  Thread thread =  Thread( TextChanger(label));
  thread.start;
  }
  }TextChanger.java import javax.swing.JLabel;
  public  TextChanger implements Runnable {
  private JLabel label;
  public TextChanger(JLabel label) {
  this.label = label;
  }
  public void run {
  try {
  while (true) {
  String text = label.getText;
   (text.length > 1) {
  text = text.sub(1, text.length) + text.charAt(0);
  label.Text(text);
  label.repa;
  }
  Thread.sleep(50);
  }
  } catch (InterruptedException ex) {
  ex.prStackTrace;
  }
  }
  }



Tags: 

延伸阅读

最新评论

发表评论