java中的垂直选框JLabel?

发布于 2024-12-11 00:47:49 字数 82 浏览 0 评论 0原文

我需要在java应用程序中构造一个选框。我认为 JLabel 是一个很好使用的控件。我已经用水平选框标签做了一些事情,但使其垂直对我来说并不那么容易。

I need to construct a marquee in java application. I thought that a JLabel is a good control to work with. I have done something with horizontal marquee label but making it vertical isn't so easy for me.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

送你一个梦 2024-12-18 00:47:49

您可以使用内部带有 JLabel 的 JPanel 来使用下面的类进行标记。

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Point;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class MarqeuePanel extends JPanel implements Runnable
{
    private boolean IsStoped = false;
    private JLabel label;
    public MarqeuePanel(Dimension d,Point p,String text)
    {
        super();
        label = new JLabel();
        label.setText(text);
        add(label);
        setSize(d);
        setOpaque(false);
        setBackground(new Color(0,0,0,0));
        label.setLocation(0,this.getSize().height);
        Thread t = new Thread(this);
        t.start();
    }

    @Override
    public void run() 
    {
        //Marqueue
        label.setLocation(0,this.getSize().height);
        while(!IsStoped)
        {
            if(label.getLocation().y < -label.getSize().height)
            {
                label.setLocation(0,this.getSize().height);
            }
            else
            {
                int x = 0;
                int y = label.getLocation().y - 1;
                label.setLocation(x,y);
            }
            try{Thread.sleep(30);}catch(Exception exc){}
        }
    }

    public void StopMarque()
    {
        IsStoped = true;
    }
}

如果您需要换行,请小心,您可以使用标签的

You can use a JPanel with a JLabel inside to marque using the class below

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Point;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class MarqeuePanel extends JPanel implements Runnable
{
    private boolean IsStoped = false;
    private JLabel label;
    public MarqeuePanel(Dimension d,Point p,String text)
    {
        super();
        label = new JLabel();
        label.setText(text);
        add(label);
        setSize(d);
        setOpaque(false);
        setBackground(new Color(0,0,0,0));
        label.setLocation(0,this.getSize().height);
        Thread t = new Thread(this);
        t.start();
    }

    @Override
    public void run() 
    {
        //Marqueue
        label.setLocation(0,this.getSize().height);
        while(!IsStoped)
        {
            if(label.getLocation().y < -label.getSize().height)
            {
                label.setLocation(0,this.getSize().height);
            }
            else
            {
                int x = 0;
                int y = label.getLocation().y - 1;
                label.setLocation(x,y);
            }
            try{Thread.sleep(30);}catch(Exception exc){}
        }
    }

    public void StopMarque()
    {
        IsStoped = true;
    }
}

Just careful if you need New Lines ,you can use tag's

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文