首页
学习
活动
专区
圈层
工具
发布

Java组件
EN

Stack Overflow用户
提问于 2014-02-09 02:01:48
回答 3查看 140关注 0票数 0

所以我做了3个不同的类,一个用于构造文本字段,一个用于标签,另一个用于滑块。我遇到的问题是,在滑块监听器中,如果设置为1(在3中),将标签设置为“randomInt + randomInt”(我知道如何将数字随机化),它只是在更改在不同类中生成的标签的文本。下面是我的主要fnctn,然后是两个类:

代码语言:javascript
复制
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
public class driver
{
    public static void main(String[] args)
    {
        colorfulLabel blueLabel = new colorfulLabel("", Color.yellow);
        colorfulTextField redTextField = new colorfulTextField(Color.red,15);
        RatingSlider mathSlide = new RatingSlider(JSlider.HORIZONTAL , 0, 3, 0);

        JFrame frame = new JFrame("Math");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel panel = new JPanel();
        panel.add(blueLabel);
        panel.add(redTextField);
        panel.add(mathSlide);
        frame.getContentPane().add(panel);
        frame.pack();
        frame.setVisible(true);
    }
}

代码语言:javascript
复制
import javax.swing.*;
import java.awt.*;
public class colorfulLabel extends JLabel
{
    //constructor uses one color parameter to respresent bg color
    //creates label using bg color
    //calls parent constructor using super()
    //private Color color;
    public colorfulLabel(String text,Color bg){
        super(text);
        setBackground(bg);
        setOpaque(true);
    }
}

代码语言:javascript
复制
//RatingSlider
import javax.swing.*;
import java.awt.*;
import java.util.Random;
import javax.swing.event.*;
public class RatingSlider extends JSlider
{
    Random generator = new Random();
    private JSlider difficultySlider;
    //accepts horizontal paramater, a min, a max, and starting point for slider
    public RatingSlider(int horiz, int start, int max, int min){
        super(horiz, start, max, min);

        difficultySlider = new JSlider(horiz, start, max, min);
        difficultySlider.setMajorTickSpacing(1);
        difficultySlider.setMinorTickSpacing(0);

        setPaintTicks(true);
        setPaintLabels(true);
        difficultySlider.setAlignmentX(Component.LEFT_ALIGNMENT);

        JPanel Slide = new JPanel();
        BoxLayout layout = new BoxLayout(Slide, BoxLayout.Y_AXIS);
        Slide.setLayout(layout);
        Slide.add(difficultySlider);
        SliderListener listener = new SliderListener();

        difficultySlider.addChangeListener(listener);
    }
    private class SliderListener implements ChangeListener
    {
        public void stateChanged(ChangeEvent event)
        {
            int num1, num2;
            String lblString = "", num_1, num_2;
            if(difficultySlider.getValue() ==1)
            {
                num1 = generator.nextInt();
                num2 = generator.nextInt();
                lblString = (num1 + " + " + num2);
            }

        }
    }

}

现在,我只需将colorfulLabel的文本设置为lblString,并且我无法在不创建新对象的情况下搞清楚如何做到这一点

EN

回答 3

Stack Overflow用户

发布于 2014-02-09 02:10:17

我认为您可以只使用.setText("")方法,它应该这样做,因为您已经扩展了JLabel类。但是坦率地说,您可以使用Builder设计模式,您不需要扩展类中的任何一个,它应该基本适用于您。

票数 1
EN

Stack Overflow用户

发布于 2014-02-09 02:18:57

“现在我只需将colorfulLabel的文本设置为lblString,而不创建一个新对象,我就搞不懂如何做到这一点”

您想要做的是将ColorfulLabel作为引用传递给RatingSlider。像这样

代码语言:javascript
复制
public class RatingSlider extends JSlider {
    ColorfulLabel cLabel;

    public RatingSlider(int horiz, int start, int max, int min, ColorfulLabel cLabel){
         super(horiz, start, max, min);
         this.cLabel = cLabel;
}

因此,您永远不会在RatingSlider中创建一个RatingSlider,您只需使用您在main中创建的那个。然后,您可以在侦听器中使用它。

代码语言:javascript
复制
cLabel.setText(lblString);

只需实例化传递ColorfulLabel引用的ColorfulLabel

代码语言:javascript
复制
new RatingSlider(JSlider.HORIZONTAL , 0, 3, 0, blueLabel);
票数 1
EN

Stack Overflow用户

发布于 2014-02-09 02:12:36

类似于:

代码语言:javascript
复制
SwingUtilities.invokeLater
(
  new Runnable
  (
    public void run()
    {
      label.setText(lblText);
    }
  )
);

它需要处于类似于invokeLater的状态,以确保它在事件调度线程中运行。您将需要获得label对象的引用,直到调用此对象的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21654300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档