Я хочу получить два параметра [a, b] в функции [уставки] из формы и использовать их в paintcomponent для рисования with.the проблема в том, что две переменные недоступны для всей панели .they доступна только [уставки] функцииПеременные, недоступные для всей панели
Вот код панели:
public class shape extends javax.swing.JPanel {
public int a;
public int b;
public shape() {
initComponents();
}
public void setpoints(int x0,int y0)
{
this.a=x0;
this.b=y0;
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.blue);
g.drawLine(a, b, a,b);
}
}
общественного класс NewJFrame расширяет javax.swing.JFrame {
public NewJFrame() {
initComponents();
}
public float p1;
public float p2;
public float p3;
public float p4;
public void drawline1(){
int k = 0;
float x = p1;
float y = p2;
float DX = p3 - p1;
float DY = p4 - p2;
float m=DY/DX;
int rx,ry;
table.getColumnModel().getColumn(1).setHeaderValue("Round(X)");
table.getColumnModel().getColumn(2).setHeaderValue("Round(Y)");
table.getTableHeader().repaint();
DefaultTableModel model = (DefaultTableModel) table.getModel();
model.setRowCount(0);
model.addRow(new Object[]{k, x, y, x, y});
shape s=new shape();
s.setpoints((int)x, (int)y);
do{
if(DX>DY){
k++;
x++;
y=y+m;
rx=Math.round(x);
ry=Math.round(y);
model.addRow(new Object[]{k, rx, ry, x, y});
s.setpoints(rx, ry);
}
if(DY>DX){
k++;
y++;
x=x+(1/m);
rx=Math.round(x);
ry=Math.round(y);
model.addRow(new Object[]{k, rx, ry, x, y});
s.setpoints(rx, ry);
}
}
while(y < p4 && x < p3);
}
Пожалуйста, разместите свой [mcve] (пожалуйста, прочитайте ссылку). –
Вы вызывали 'repaint' после вызова' setpoints', потому что на основании вашего ограниченного фрагмента кода он должен работать – MadProgrammer
Я вызываю функции setpoints в форме и посылаю параметры, но значения переменных a & b существуют только в функции заданных значений, но имеют значение нулевого значения вне функции, поэтому они не могут назначить значение в paintcomonent –