java - 我如何在java gui中使用图像

标签 java image user-interface jpanel paintcomponent

嗨,我正在使用 null 布局和 setBounds() 布局方法制作 Gui 程序。在程序中,我想要在屏幕上的随机位置打印 25 个字符串。我知道我可以用 for 循环来做到这一点,但我一直在尝试这样做,但没有成功。

public void paint(Graphics g){
    super.paint(g);
    for(i=0;i<25;i++){
        g.drawString("string name",Math.random()*250,Math.random()*250);
        g.setColor(Color.RED);
    }
}

我一直在尝试这个,但它没有起作用,所以我的问题是是否有更好的方法来做到这一点,或者我是否犯了某种明显的错误。

最佳答案

您没有正确使用 Math.random() 部分,请尝试以下操作:

import java.awt.Color;
import java.awt.Container;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JPanel;

/**
 *
 * @author David
 */
public class JavaApplication142 extends JFrame {

    private int width = 300, height = 300;

    public JavaApplication142() {
        createAndShowUI();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                JavaApplication142 jApp = new JavaApplication142();
            }
        });
    }

    private void createAndShowUI() {
        setTitle("Painting");
        setSize(width, height);
        setResizable(false);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        addComponentsToContentPane(getContentPane());
        setVisible(true);
    }

    private void addComponentsToContentPane(Container contentPane) {
        Panel panel1 = new Panel();
        contentPane.add(panel1);
    }

    class Panel extends JPanel {

        private Random rand;

        public Panel() {
            rand = new Random();
        }

        @Override
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            for (int i = 0; i < 25; i++) {
                g.drawString("string name", (int) rand.nextInt(width), (int) rand.nextInt(height));
                g.setColor(Color.RED);
            }
        }
    }
}

这将有助于在面板区域内绘制所有字符串,尽管不同长度的字符串可能会超出屏幕,只需添加一些额外的代码来检查字符串的长度并适本地设置其坐标

关于java - 我如何在java gui中使用图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11052071/

相关文章:

php - 使用 bootstrap 将文本和图像并排对齐

java - Java中的简单GUI问题

qt - Qt setHorizo​​ntalHeaderLabel for qtableWidget

java - 通过 Java 生成 Oauth Bearer token

java - 验证 AndroidManifest.xml 文件

java - 我应该继续在 JSP 中打开和关闭连接吗

android - 日历事件 UI android

java - 如何通过Java检查oracle中是否存在给定名称的表?

javascript - Twitter Web 应用程序的图像共享(API?)

html - Aframe 图像透明度