Вы можете создать панель, которая генерирует случайное число от минимального значения до максимального значения.
Во-первых, это неверно.Вы правильно использовали drawString
в вызове прямо перед этим.
g2.draw(numbers, 50, 90); // draw is not a method of Graphics2D
Во-вторых, если ваш массив не будет чем-то отличным от целых чисел, вы можете просто отобразить случайное значение как-is.
String.format("%d", getRandomInteger()) // Display a random number as a string
Наконец, в JComponent
(свинг) вы должны переопределить paintComponent
, а не paint
.В вашем примере вы можете просто использовать стандартную графику (g.drawString
).
@Override
protected void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g; // Optional, has more methods
}
import java.awt.*;
import javax.swing.*;
public class RandomNumberPanel extends JPanel {
private static final long serialVersionUID = -4376447503776020320L;
private int min;
private int max;
public RandomNumberPanel() {
this(0, 10);
}
public RandomNumberPanel(int max) {
this(0, max);
}
public RandomNumberPanel(int min, int max) {
this.min = min;
this.max = max;
}
public int getRandomInteger() {
return getRandomInteger(min, max);
}
@Override
protected void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
g2.setColor(Color.BLACK);
g2.drawString("The number is below", this.getWidth() / 4, this.getHeight() / 3);
g2.drawString(String.format("%d", getRandomInteger()), this.getWidth() / 2, this.getHeight() / 2);
}
public static final int getRandomInteger(final int max, final int min) {
return ((int) (Math.random() * (max - min))) + min;
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFrame mainFrame = new JFrame();
JPanel panel = new RandomNumberPanel(1, 10); // [1, 10]
panel.setPreferredSize(new Dimension(200, 100));
mainFrame.setContentPane(panel);
mainFrame.pack();
mainFrame.setLocationRelativeTo(null);
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainFrame.setVisible(true);
}
});
}
}