仓酷云

标题: 发布一篇JLabel通告栏笔墨转动效果 [打印本页]

作者: 变相怪杰    时间: 2015-1-18 11:24
标题: 发布一篇JLabel通告栏笔墨转动效果
用java开发web只要两本书:一本是关于java基础的,一本是关于jsp、servlet的就可以了。开发周期长,我就来讲句题外话,现在有很多思想都是通过java来展现。
起首要把握一个观点:一个字符串在盘算机屏幕中所占的像素,例如说取一个JLabel内里的Text所占的宽和高,办法以下:(次要用到FontMetrics类)
import java.awt.FontMetrics;
import javax.swing.JLabel;
JLabel label = new JLabel("test Label ");
FontMetrics metrics = label.getFontMetrics(label.getFont());
int textH = metrics.getHeight(); //字符串的高,只和字体有关
int textW = metrics.stringWidth(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 class Test {
    private JFrame frame;
    private String scrolledText;
    private String str = "转动笔墨 Demo";
    /** *//**
     * Launch the application
     * @param args
     */
    public static void main(String args[]) {
        try {
            Test window = new Test();
            window.frame.setVisible(true);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /** *//**
     * Create the application
     */
    public Test() {
        initialize();
    }
    /** *//**
     * Initialize the contents of the frame
     */
    private void initialize() {
        frame = new JFrame();
        frame.setBounds(100, 100, 500, 375);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        final JPanel panel = new JPanel();
        panel.setBackground(Color.WHITE);
        panel.setLayout(new BorderLayout());
        frame.getContentPane().add(panel, BorderLayout.NORTH);
        final JLabel label = new JLabel();
        label.setText("New JLabel");
        panel.add(label);
        label_scrolledText(label);
        // 当窗体变更时要从头对label的转动笔墨举行设置
        frame.addComponentListener(new ComponentAdapter() {
            public void componentResized(ComponentEvent arg0) {
                label_scrolledText(label);
            }
        });
    }
    /** *//**
     * 转动笔墨
     * @param label
     */
    public void label_scrolledText(JLabel label) {
        this.scrolledText = this.str;
        label.setText(scrolledText);
        FontMetrics metrics = label.getFontMetrics(label.getFont());
        int textW = metrics.stringWidth(label.getText());
        Dimension frameSize = frame.getSize();
        for (int i = 1; i <= (frameSize.width - textW) / 3 - 3; i++)
            scrolledText += " ";
        label.setText(scrolledText);
        Thread thread = new Thread(new TextChanger(label));
        thread.start();
    }
}
TextChanger.java
import javax.swing.JLabel;
public class TextChanger implements Runnable {
    private JLabel label;
    public TextChanger(JLabel label) {
        this.label = label;
    }
    public void run() {
        try {
            while (true) {
                String text = label.getText();
                if (text.length() > 1) {
                    text = text.substring(1, text.length()) + text.charAt(0);
                    label.setText(text);
                    label.repaint();
                }
                Thread.sleep(50);
            }
        } catch (InterruptedException ex) {
            ex.printStackTrace();
        }
    }
}
终极的效果如图所示:
发布一篇JLabel通告栏笔墨转动效果
登录/注册后可看大图

<br>

你总不能说你写框架吧,那无疑会加大工作量,现在大多企业采取的是折中的办法,就是改别人写好的框架,可要改框架,前提是你对这个框架足够的了解,这就更难了。
作者: 飘灵儿    时间: 2015-1-21 05:10
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
作者: 不帅    时间: 2015-1-27 15:06
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
作者: 山那边是海    时间: 2015-2-5 06:34
Java是一种计算机编程语言,拥有跨平台、面向对java
作者: 若天明    时间: 2015-2-5 15:32
是一种语言,用以产生「小应用程序(Applet(s))
作者: 变相怪杰    时间: 2015-2-12 17:23
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
作者: 再现理想    时间: 2015-3-3 03:51
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
作者: 柔情似水    时间: 2015-3-4 18:37
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
作者: 金色的骷髅    时间: 2015-3-9 23:43
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
作者: 简单生活    时间: 2015-3-17 03:07
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
作者: 第二个灵魂    时间: 2015-3-23 16:53
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2