У меня проблемы с моим Jframe и движущимися объектами с помощью ключевого слушателя - PullRequest
0 голосов
/ 20 января 2020

Хорошо, так что эта программа должна отображать Jlabel и перемещать его по экрану, я могу заставить метку отображаться, но не двигаться. Любая помощь будет высоко ценится.

import java.awt.*;
import javax.swing.*;

import java.awt.event.*;

public class A4_NameMove extends JFrame
{
 JLabel label;

 public A4_NameMove()
     {

     label = new JLabel(("ABCDEFG"));
     label.setBounds(300,300,200,50);
     label.setFont(new Font("Verdana",Font.BOLD,30));

     label.addKeyListener(new KeyAdapter() {

         public void keyPressed(KeyEvent ke) {
             if(ke.getKeyCode() ==40){

                 label.setLocation(label.getX(),label.getY()+100);
                // label.setBounds(label.getX(),label.getY()+50,200,50);
                // repaint();
             }
             if(ke.getKeyCode() == 38){
                 label.setLocation(label.getX(),label.getY()-100);
                // label.setBounds(label.getX(),label.getY()-50,200,50);

                 //repaint();
             }
             if(ke.getKeyCode() == 37)
                 {
                label.setLocation(label.getX()-100,label.getY());
                 //label.setBounds(label.getX()-50,label.getY(),200,50);

                 //repaint();
             }
             if(ke.getKeyCode() == 39)
                 {
                 label.setLocation(label.getX()+100,label.getY());
               //  label.setBounds(label.getX()+50,label.getY(),200,50);

                // repaint();
             }
         }
     });
     label.addMouseListener(new MouseAdapter()
         {
         public void mouseClicked(MouseEvent me)
             {
             if(me.getClickCount() == 1)
                 {
                 /*boolean dd = label.isOptimizedDrawingEnabled();
                 boolean ff = label.requestFocusInWindow();
                 repaint();*/
             }
         }

     });

     JPanel p = new JPanel();
     p.setPreferredSize(new Dimension(600,600));
     p.setLayout(null);
     p.add(label);
     JScrollPane js = new JScrollPane(p);
     getContentPane().add(js);
 }

 public static void main(String args[])
     {
     A4_NameMove frame = new A4_NameMove();
     frame.setDefaultCloseOperation( EXIT_ON_CLOSE );
     frame.setSize(700,700);
     frame.setVisible(true);
 }
     }

Любые предложения, я закомментировал некоторый код, где я пытался найти решение, но безрезультатно.

...