仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 483|回复: 10
打印 上一主题 下一主题

[学习教程] 发布一篇JLabel通告栏笔墨转动效果

[复制链接]
变相怪杰 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:24:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
用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();
        }
    }
}
终极的效果如图所示:

<br>

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

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 21:18

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表