如何在JavaGUI中使用图像
您好,我正在制作一个Gui程序,使用空布局和setBounds()方法进行布局。在节目中,我想在屏幕上随机打印25个字符串。我知道我可以用for循环来实现这一点,但是我一直在尝试这一点,但没有效果如何在JavaGUI中使用图像,java,image,user-interface,jpanel,paintcomponent,Java,Image,User Interface,Jpanel,Paintcomponent,您好,我正在制作一个Gui程序,使用空布局和setBounds()方法进行布局。在节目中,我想在屏幕上随机打印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);
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);
}
}
public void绘制(图形g){
超级油漆(g);
对于(i=0;i您没有正确使用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.awt.Color;
导入java.awt.Container;
导入java.awt.EventQueue;
导入java.awt.Graphics;
导入java.util.Random;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
/**
*
*@作者大卫
*/
公共类JavaApplication142扩展了JFrame{
私有整数宽度=300,高度=300;
公共JavaApplication142(){
createAndShowUI();
}
/**
*@param指定命令行参数
*/
公共静态void main(字符串[]args){
invokeLater(新的Runnable(){
@凌驾
公开募捐{
JavaApplication142 jApp=新的JavaApplication142();
}
});
}
私有void createAndShowUI(){
片名(“绘画”);
设置尺寸(宽度、高度);
可设置大小(假);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(空);
addComponentsToContentPane(getContentPane());
setVisible(真);
}
私有void addComponentsToContentPane(容器内容窗格){
面板1=新面板();
contentPane.add(panel1);
}
类面板扩展了JPanel{
私有随机兰德;
公共事务委员会(){
rand=新随机数();
}
@凌驾
公共组件(图形g){
超级组件(g);
对于(int i=0;i<25;i++){
g、 抽绳(“字符串名称”,(int)rand.nextInt(宽度),(int)rand.nextInt(高度));
g、 setColor(Color.RED);
}
}
}
}
这将有助于在面板区域内绘制所有字符串,尽管长度不同的字符串可能会脱离屏幕,但只需添加一些额外的代码来检查字符串的长度,并适当地设置其词组
在循环中意味着“随机”值通常是相同的。OP使用的Math.random()
解决了这个问题。要修复您的示例,请将new random()
移动到循环之外,或者更好,将其声明为类属性并创建一次。“使用null布局和setBounds()方法进行布局”不要这样做,这是一条通往疯狂的道路。“一直不起作用”‘不起作用’对于告诉我们出了什么问题是没有用的。当它起作用时,你期望看到什么?你看到了什么?是否有任何错误或例外?