java - 如何在 jPanel 中像正方形一样移动文本

标签 java swing

我想像正方形一样在 JPanel 内移动文本,我能够从顶部面板移动文本,但无法将其从开始的位置向上移动。

import java.awt.*;
import javax.swing.*;
public class test extends JPanel {
    int x = 100;
    int y = 100;
    public void move() {
        if (x < getWidth() - 100 && y < getHeight() - 100) x = x + 1;
        if (x >= getWidth() - 100 && y < getHeight() - 100) y = y + 1;
        if (y >= getHeight() - 100) x = x - 1;
        if (x < 0) y = y - 1;
    }
    public void paint(Graphics g) {
        super.paint(g);
        Graphics2D g2d = (Graphics2D) g;
        move();
        g2d.setColor(Color.BLUE);
        g2d.drawString(" X =  " + x + " Y " + y, x, y);
    }
    public static void main(String args[]) throws InterruptedException {
        JFrame frame = new JFrame("Test Frame");
        test ts = new test();
        frame.setSize(400, 500);
        frame.add(ts);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        while (true) {
            ts.repaint();
            Thread.sleep(10);
        }
    }
}

最佳答案

您可以使用此move方法:

public void move() {

    if (100 <= x && x < getWidth() - 100 && y == 100)
        x = x + 1;
    if (x == getWidth() - 100 && 100 <= y && y < getHeight() - 100)
        y = y + 1;
    if (100 < x && x <= getWidth() - 100 && y == getHeight() - 100)
        x = x - 1;
    if (x == 100 && 100 < y && y <= getHeight() - 100)
        y = y - 1;
}

调整组件大小将停止移动,但您没有指定任何相关内容,因此这符合您的要求。

此外,重写 paintComponent 而不是 paint

关于java - 如何在 jPanel 中像正方形一样移动文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34109506/

相关文章:

java - 如何使用在 if 语句之外的 if 语句中声明的变量?

java - 从Java发送邮件: works in Eclipse but fails when deployed?

java - 在 Cloud 9 上运行 Java GUI 应用程序

java - JCombobox - 仅在值更改时执行 actionlistener

java - 在文件夹和子文件夹中的文件上运行Mapreduce

java - 我可以通过它占用的内存量来限制 HashMap 吗?

java - 如何使用 Java 和 JFreeChart 创建图表浏览器?

java - 拖放图像

java - 在 Spring Boot 中使用 EntityManager

java - 更多页面,相同的窗口/框架。 Eclipse Windowbuilder