gpt4 book ai didi

java - 有没有办法让 g.drawstring 显示随机字符串

转载 作者:行者123 更新时间:2023-12-01 13:31:46 25 4
gpt4 key购买 nike

首先,我做了一些搜索,但似乎找不到任何东西。有没有一种方法可以使用 g.drawstring 显示随机字符串?这是我现在拥有的:

g.drawString("$" + buttonPrice[i], button[i].x + itemIn, button[i].
y + itemIn - 5);
g.setFont(new Font("Courier new", Font.BOLD, 14));
g.drawString("here is a string",10 , 520);

最佳答案

"what I am trying to do is have an array or similar of strings to chose from and have it display a random string from the array"

我不确定您希望如何随机选择单词,但在下面的代码中,我所做的是使用一个 Timer ,其注册的监听器回调获取 a 的随机索引字符串的列表。已经有一个 word 变量,所以我只需创建 word = list.get(randomIndex); 然后调用 repaint()。您可以通过按按钮或其他操作轻松执行类似的操作。

    private List<String> list = new ArrayList<>();
private Random random = new Random(System.currentTimeMillis());
private String word;

public StringPanel() {
for (int i = 1; i <= 100; i++) {
list.add("Word " + i);
}

word = list.get(0);

Timer timer = new Timer(500, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int rand = random.nextInt(list.size());
word = list.get(rand);
repaint();
}
});
timer.start();
}

....
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
...
g.drawString(word, x, y);
}

enter image description here

<小时/>

这是完整的代码

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.Timer;

public class TestRandomString {

public TestRandomString() {

JFrame frame = new JFrame("Test Card");
frame.setContentPane(new StringPanel());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}

public class StringPanel extends JPanel {

private static final int D_H = 500;
private static final int D_W = 500;
private int x = 50;
private int y = 50;

private List<String> list = new ArrayList<>();
private Random random = new Random(System.currentTimeMillis());

private String word;

Font font = new Font("impact", Font.PLAIN, 28);
int wordWidth;
int wordHeight;

public StringPanel() {
for (int i = 1; i <= 100; i++) {
list.add("Word " + i);
}

word = list.get(0);


Timer timer = new Timer(500, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int rand = random.nextInt(list.size());
word = list.get(rand);
x = random.nextInt(D_W - wordWidth);
y = random.nextInt(D_H) + wordHeight;

repaint();
}
});
timer.start();
}

@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
FontMetrics fm = g.getFontMetrics(font);
wordWidth = fm.stringWidth(word);
wordHeight = fm.getAscent();

g.setFont(new Font("impact", Font.PLAIN, 28));
g.setColor(Color.BLUE);
g.drawString(word, x, y);
}

@Override
public Dimension getPreferredSize() {
return new Dimension(D_H, D_W);

}
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new TestRandomString();
}
});
}
}

关于java - 有没有办法让 g.drawstring 显示随机字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21528931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com