我正在尝试将变量从一类传递到另一类。我有下面显示的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
中?
答案 0 :(得分:2)
我认为您需要通过添加了所有面板的父对象来完成此操作。您应该看看mediator design pattern:
一组对象以定义明确但复杂的方式进行通信。的 由此产生的相互依存关系是无结构的,很难 明白。
通过使用中介者模式,可以减少所拥有的3个类之间的依赖关系。在良好的面向对象设计中,这3个类不应相互依赖,因此可以根据需要删除或替换它们,而不会破坏其余的代码。