Java kodumda repaint()
yöntemiyle ilgili bir sorun var. Başka bir class
numaralı telefondan aramak istiyorum ama yapamam, hiçbir şey işe yaramıyor. Forumlarda aradım ama hiçbir şey bana yardım edemedi.Başka bir sınıfta arayarak Repaint() yöntemi
Benim Anaclass
:
public class Ball extends JLabel implements MouseMotionListener{
public Ball(){
}
public static double x = 10;
public static double y = 10;
public static double width = 40;
public static double height = 40;
String nick;
boolean isEllipse = true;
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
if(isEllipse){
Ellipse2D e2d = new Ellipse2D.Double(x, y, width, height);
g2d.setColor(Color.RED);
g2d.fill(e2d);
}
else{
Rectangle2D r2d = new Rectangle2D.Double(x, y, width, height);
g2d.setColor(Color.GREEN);
g2d.fill(r2d);
}
}
@Override
public void mouseDragged(MouseEvent e) {
isEllipse = false;
x = e.getX() - 30;
y = e.getY() - 40;
this.repaint();
}
@Override
public void mouseMoved(MouseEvent e) {
x = e.getX() - 30;
y = e.getY() - 40;
isEllipse = true;
this.repaint();
}
}
Ve Anahtar ben hamle için KeyListener
koymakclass
şekiller ile:
public class Main {
public static Main main;
public static JFrame f;
public Main(){
}
public static void main(String[] args) {
main = new Main();
f = new JFrame();
Ball b = new Ball();
f.getContentPane().setBackground(Color.GRAY);
f.add(b);
f.setSize(500, 500);
f.setLocationRelativeTo(null);
f.setTitle("Test");
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.addMouseMotionListener(b);
f.addKeyListener(new Key());
}
}
Topu Taşınmıyorum şekiller için 2DGraphics yarattıclass
tuşa basma:
public class Key extends Ball implements KeyListener {
public Key() {
}
@SuppressWarnings("static-access")
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_W){
super.x += 10;
super.repaint();
System.out.println("x: " + super.x);
}
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
}
Ama bir şey bu kodla yanlıştır: süper yöntem Anahtarclass
için çalışmaz. Ballclass
'daki her şey iyi çalışıyor. Sorun nerede?
Ah sayesinde artık işe yarıyor. :) Ben KeyListener kullanıyorum çünkü büyük bir şey yapmayacağım, aslında 2014 yılından beri "net" Java (oyun eklentileri için genişletilmiş kütüphaneler olmadan) kullanmıyorum ve şimdi bunu baştan hatırlatmak zorundayım . : D – McDaniel