如何在Java中将变量从一类传递到另一类?

时间:2018-12-02 15:26:21

标签: java class hierarchy

我正在尝试将变量从一类传递到另一类。我有下面显示的3个课程。

public class OvalPanel extends JPanel {
//declare variables

public OvalPanel() {

//create panel here

ovalShape = new OvalShape();
ovalShape.setMyColor(255, 255, 255);

//set layout down here
}

然后我有了OvalShape.java

public class OvalShape extends JPanel {

public OvalShape() {
    Dimension size = getPreferredSize();
    size.width = 300;
    size.height= 300;
    setPreferredSize(size);
    setBorder(BorderFactory.createLoweredSoftBevelBorder());
}

public void setMyColor(int r, int g, int b) {
    this.myColor = new Color(r,g,b);
}

public void paintComponent(Graphics g) {
    super.paintComponent(g);
    g.setColor(myColor);
    g.fillOval(0,0,100,100);
}

最后是DetailsPanel.java,其中设置了r,g,b值

public class DetailsPanel extends JPanel {

//declare variables

public DetailsPanel() {
    Dimension size = getPreferredSize();
    size.width = 250;
    setPreferredSize(size);


    redSlider = new JSlider(SwingConstants.VERTICAL, 0, 255, 0);
    redSlider.addChangeListener(
            new ChangeListener() {
                @Override
                public void stateChanged(ChangeEvent e) {
                    red = redSlider.getValue();
                }
            }
    );

    //greenSlider

    //blueSlider

    //set layout
}

我的问题是如何将DetailsPanel中的红色,绿色,蓝色变量传递到ovalShape.setMyColor()中的方法OvalPanel中?

1 个答案:

答案 0 :(得分:2)

我认为您需要通过添加了所有面板的父对象来完成此操作。您应该看看mediator design pattern

  •   

    一组对象以定义明确但复杂的方式进行通信。的   由此产生的相互依存关系是无结构的,很难   明白。

通过使用中介者模式,可以减少所拥有的3个类之间的依赖关系。在良好的面向对象设计中,这3个类不应相互依赖,因此可以根据需要删除或替换它们,而不会破坏其余的代码。