سلام دوستان
من یک کلاس که JPanel رو extends و KeyListener رو implements میکنه ساختم . حالا می خوام که به محض اجرای برنامه (در تابع main) در پانل , دو خط ( توسط DrawLine) ترسیم بشه . مشکل من اینه که تا الان هر کاری کردم دستور اعمال نمیشه . فقط در یک صورت ترسیم انجام شده , اونم به این صورت که در رویداد KeyTyped دستور DrawَAxis رو قرار بدم . ولی نمیتونم از داخل تابع main ترسیم رو انجام بدم . هر دو کلاس رو قرار میدم تا یه نگاهی بهش بندازید . (به تابع DrawAxis دقت کنید,خط 47 از کلاس Drawing و خط 11 از کلاس main ) . قصد من اینه که ترسیم خطوط رو از بیرون کلاس Drawing کنترل کنم . مثلا از داخل کلاس main . ولی در حال حاضر فقط از داخل کلاس Drawing می تونم خط رسم کنم ,ولی از بیرون کلاس Drawing خطی ترسیم نمیشه .
ممنون
کلاس Drawing
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.KeyListener;
import java.awt.event.KeyEvent;
import javax.swing.JPanel;
@SuppressWarnings("serial")
public class Drawing extends JPanel implements KeyListener
{
private int width;
private int height;
public Drawing()
{
addKeyListener(this);
}
private void DrawLine(Point SP,Point EP){
Graphics g=getGraphics();
g.drawLine(SP.x, SP.y, EP.x, EP.y);
g.dispose();
}
public void DrawAxis(){
System.out.print("Axis is drawn ....");
width=this.getWidth();
height=this.getHeight();
DrawLine(new Point(0,height/2),new Point(width,height/2));
DrawLine(new Point(width/2,0),new Point(width/2,height));
}
@Override
public void keyPressed(KeyEvent event) {
// TODO Auto-generated method stub
}
@Override
public void keyReleased(KeyEvent event) {
// TODO Auto-generated method stub
}
@Override
public void keyTyped(KeyEvent event) {
//char c=event.getKeyChar();
DrawAxis();
}
}
اینم کلاس main :
import javax.swing.JFrame;
public class Example1
{
public static void main(String[] args) {
JFrame jf=new JFrame();
jf.setSize(500, 500);
Drawing d=new Drawing();
d.setFocusable(true);
//***********************************
d.DrawAxis();
//***********************************
jf.add(d);
jf.setVisible(true);
}
}