में कॉल करने की विधि() विधि को मेरे जावा कोड में repaint()
विधि के साथ समस्या है। मैं इसे class
में कॉल करना चाहता हूं लेकिन मैं नहीं कर सकता, कुछ भी काम नहीं करता है। मैंने मंचों पर खोज की है, लेकिन कुछ भी मेरी मदद करने में सक्षम नहीं था।किसी अन्य वर्ग
मेरे मुख्यclass
:
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());
}
}
गेंदclass
जहां मैं आगे बढ़ आकार के लिए 2DGraphics बनाया:
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();
}
}
और कुंजीclass
जहाँ मैं इस कदम के लिए KeyListener
डाल आकार द्वारा कुंजी दबाने:
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
}
}
लेकिन कुछ इस कोड के साथ गलत है: सुपर विधि कुंजीclass
के लिए काम नहीं करता। में सबकुछ बॉलclass
अच्छी तरह से काम कर रहा है। समस्या कहाँ हे?
ओह, धन्यवाद, अब यह काम कर रहा। :) मैं KeyListener का उपयोग कर रहा हूं क्योंकि मैं कुछ बड़ा करने वाला नहीं हूं, वास्तव में मैं 2014 से "स्पष्ट" जावा (गेम प्लगइन्स के लिए विस्तारित पुस्तकालयों के बिना) का उपयोग नहीं कर रहा हूं और अब मुझे इसे शुरुआत से याद दिलाना है । : डी – McDaniel