情况如下。我有这个代码。在第二个类中删除变量a时。计划正在运作。它只画了一条线。但我想把一个变量放在“一个”上。然后在第一堂课我要宣布它。然后我想用它。我怎样才能做到这一点。
基本上我可以在第一个类(Grafik3)中将变量a放在NewLabel方法的第二个类中吗?
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);
}
}
答案 0 :(得分:0)
如果你这样做,你就不再覆盖这个功能了。您正在创建重载。这不是你想要的。而是尝试使int a
成为一个类成员,并在呈现组件之前将变量设置为适当的值。
它不起作用的原因正是因为您为该方法创建了一个重载。这意味着在渲染时不使用此方法。而是使用原始的paintComponent(Graphics)
方法。用于渲染的调用始终 paintComponent(Graphics)
。因此,如果您创建一个具有相同名称但不同参数的原始方法旁边的方法(称为一个重载),此方法不会替换原始方法,而只是一个新方法,它们只是同时存在。
答案 1 :(得分:0)
调用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);
}
}