情况是这样的。我有这个代码。当您删除第二个类中的变量a时。程序正在运行。它只是画了一条线。但我想把一个变量设为"a“。然后在头等舱中,我想声明它。那我就想用它。我怎么能做到这一点。
基本上,在NewLabel方法中,我可以将变量a放在第一个类(Grafik3)中的哪里,以便在第二个类中工作?
public class Grafik3 extends JFrame{
/**
*
*/
private static final long serialVersionUID = 1L;
public Grafik3()
{ add(new YeniLabel("Paint component.............. ")); }
public static void main(String[] args){
Grafik3 cer = new Grafik3();
cer.setTitle("Paint component");
cer.setLocationRelativeTo(null); // çerçevenin merkezi
cer.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
cer.setSize(300,120);
cer.setVisible(true);
}
}
class YeniLabel extends JLabel {
/**
*
*/
private static final long serialVersionUID = 1L;
public YeniLabel(String s){super(s); }
protected void paintComponent(Graphics g,int a){
super.paintComponent(g);
g.drawLine(a, 0, 70, 70);
}
}发布于 2014-02-13 01:02:22
如果你这样做,你就不会再重写这个函数了。您正在创建重载。这不是你想要的。相反,请尝试使int a成为类成员,并在呈现组件之前将变量设置为适当的值。
它不工作的原因正是因为您为该方法创建了一个重载。这意味着渲染时不使用此方法。取而代之的是使用原始的paintComponent(Graphics)方法。用于渲染的调用始终是paintComponent(Graphics)。因此,如果您在具有相同名称但参数不同的原始方法旁边创建一个方法(这称为重载),则此方法不会替换原始方法,而只是一个新方法,它们同时存在。
发布于 2014-02-13 01:03:33
调用getter函数。
在你的主类中:
YeniLabel yeni = new YeniLabel("Paint component.............. ");
add(yeni);
//whenever you want to get it:
int a = yeni.getA();在你的YenniLabel类中:
class YeniLabel extends JLabel {
int a = 25;
public YeniLabel(String s){super(s); }
public void getA(){
return a;
}
protected void paintComponent(Graphics g){
super.paintComponent(g);
g.drawLine(a, 0, 70, 70);
}
}https://stackoverflow.com/questions/21734517
复制相似问题