当前位置: 代码迷 >> Java相关 >> 随机颜色和字体不能表达
  详细解决方案

随机颜色和字体不能表达

热度:126   发布时间:2007-01-02 12:39:13.0
随机颜色和字体不能表达

为什么用的随机数不能产生随机颜色和字体 不用随机数了颜色和字体的效果又能显示出来
import java.awt.*;
import javax.swing.*;
public class Char extends JFrame{
int i;
public Char(){
super("Draw characters");
setSize(300,300);
setVisible(true);
}
public void paint(Graphics g){
super.paint(g);
g.setColor(new Color((int)Math.random()*256,(int)Math.random()*256,(int)Math.random()*256));
i = (int)Math.random()*3;
switch(i){
case 0:
g.setFont(new Font("Serif",Font.BOLD,(int)Math.random()*8+12));
break;
case 1:
g.setFont(new Font("Monospaced",Font.ITALIC,(int)Math.random()*8+12));
break;
case 2:
g.setFont(new Font("SansSerif",Font.PLAIN,(int)Math.random()*8+12));
break;
default:
g.setFont(new Font("Serif",Font.ITALIC,(int)Math.random()*8+12));
break;
}
g.drawString("Happy New Year!",100,150);
}
public static void main(String args[]){
Char application = new Char() ;
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

}

搜索更多相关的解决方案: 字体  随机  颜色  表达  

----------------解决方案--------------------------------------------------------

主要是括号问题..

import java.awt.*;
import javax.swing.*;
public class Char extends JFrame{
public Char(){
super("Draw characters");
setSize(300,300);
setVisible(true);
}
public void paint(Graphics g){
super.paint(g);
g.setColor(new Color((int)(Math.random()*256),(int)(Math.random()*256),(int)(Math.random()*256)));
int i = (int)(Math.random()*3);
System.out.println(i);
switch(i){
case 0:
g.setFont(new Font("Serif",Font.BOLD,(int)Math.random()*8+12));
break;
case 1:
g.setFont(new Font("Monospaced",Font.ITALIC,(int)Math.random()*8+12));
break;
case 2:
g.setFont(new Font("SansSerif",Font.PLAIN,(int)Math.random()*8+12));
break;
default:
g.setFont(new Font("Serif",Font.ITALIC,(int)Math.random()*8+12));
break;
}
g.drawString("Happy New Year!",100,150);
}
public static void main(String args[]){
Char application = new Char() ;
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

}


----------------解决方案--------------------------------------------------------
^_^ 谢谢姐姐 一直没注意到那个括号 不过还是不懂为什么不加不可以
----------------解决方案--------------------------------------------------------
(int)Math.random()*256
如果你不加的话...它会先得到(int)Math.random()...得到0..然后再*255......结果一直..都是0..
----------------解决方案--------------------------------------------------------

楼 上的MM解释的很好,所以以后这种括号问题特别要小心


----------------解决方案--------------------------------------------------------
呵呵 谢谢啊 明白了 还想问一下 产生随机字体有没有什么好的方法啊
----------------解决方案--------------------------------------------------------
随机字体,就是先把系统的可用字体得到
然后产生它下标之内的随机数,去取下标就行了

Example:

String[] fontNames=java.awt.GraphicsEnvironment.getAvailableFontFamilyNames();//得到本系统的可用字体名
int index=(int)(Math.random*fontNames.length);//产生一个随机的下标

String getName=fontNames[index];

用此名字构造Font就行了

懂么


----------------解决方案--------------------------------------------------------
String[] fontNames=java.awt.GraphicsEnvironment.getAvailableFontFamilyNames();
这句不懂,数组在没有长度的条件下就可以用了吗?还有,我也不知道怎么把它放进程序里阿 不知道fontNames这个数组怎么定义

----------------解决方案--------------------------------------------------------
汗阿,说实话,我对Swing/awt忘记差不多了,帮不了你什么忙了 sorry yushui MM 不过purana倒是很细心的,我一开始也没发现这个问题

----------------解决方案--------------------------------------------------------
以下是引用yushui在2007-1-2 22:14:53的发言:
String[] fontNames=java.awt.GraphicsEnvironment.getAvailableFontFamilyNames();
这句不懂,数组在没有长度的条件下就可以用了吗?还有,我也不知道怎么把它放进程序里阿 不知道fontNames这个数组怎么定义

String[] fontNames=java.awt.GraphicsEnvironment.getAvailableFontFamilyNames();
这句想放哪里就放哪里,随便都能放

数组可以这样定义的,
fontNames就是那样定义


----------------解决方案--------------------------------------------------------
  相关解决方案