導航:首頁 > 編程語言 > javadrawoval改變字體大小

javadrawoval改變字體大小

發布時間:2023-02-24 17:41:55

① 問一個java問題,下面代碼為什麼會報java.lang.IllegalArgumentException 這種異常哪 希望大神詳細解答

這個異常是說參數不合法,如果能把異常信息全部貼出來就好找地方了,但是目測initialize方法中this.setContentPane(new DrawPanel())這里的問題,DrawPanel繼承的是JFrame,在主體窗口DrawCircle里再添加一個窗口類,不但顯示不出來,而且兩個JFrame因為setContentPane方法產生了沖突,最直接的修改就是把private class DrawPanel extends JFrame改成private class DrawPanel extends JPanel,因為JPanel是面板,可以正常裝載到JFrame里

② 用JAVA編寫一個程序,以隨機顏色繪制隨機長度的直線

g.drawOval(0, 0, 36, 36)
第一對坐標是一個能把你做的圖形用最小的面積包圍起來的矩形 的左上角內的坐標,第二對容是這個圓(確切的說是橢圓)的長軸和短軸的長度。
g.drawString("1",36, 36);
所畫字體從36,36的位置開始,你想把它放進圓中,就要根據字體高、寬來計算圓的位置和大小。
至於
drawPanel.setBorder(BorderFactory.createLineBorder(Color.red));
這句是肯定起了作用的,只不過太快了,你還沒反映過來。
在把邊框設置為紅色後,被你畫的圓和字元覆蓋了,把
public void paint(Graphics g){
g.drawOval(0, 0, 36, 36);
g.drawString("1",36, 36);
}
}
注釋掉,你就能看到了。
不知道最終的目的是什麼,但比可以尋求另外的解決方案,如嵌套等。

如果對您有幫助,請記得採納為滿意答案,謝謝!祝您生活愉快!

③ java煙花程序看不懂,求解釋!

importjava.awt.*;
importjava.applet.*;
importjava.awt.event.*;

importjavax.swing.*;

,Runnable{
intx,y;//記錄滑鼠點擊的坐標
inttop,point;//好像沒用到

publicvoidinit(){
x=0;
y=0;
setBackground(Color.black);//設置背景色為黑色
addMouseListener(this);//添加滑鼠監聽
}

publicvoidpaint(Graphicsg){
}

publicstaticvoidmain(Stringargs[]){
Fireworksapplet=newFireworks();
JFrameframe=newJFrame("TextAreaNew");
frame.addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){//右上角的叉
System.exit(0);
}
});
frame.add(applet,BorderLayout.CENTER);
frame.setSize(800,400);//程序的框框大小
applet.init();
applet.start();
frame.setVisible(true);//
}

publicvoidrun(){
//變數初始化
Graphicsg1;
g1=getGraphics();//這是畫筆,得到一個畫筆
inty_move,y_click,x_click;
intv;//用於計算等待的時間
x_click=x;
y_click=y;//把點擊的坐標保存下來,因為其它線程會去改這兩個坐標。
y_move=400;//用來計算變動的那個點,現在是屏幕的最大高度
v=3;
intr,g,b;
while(y_move>y_click)//如果點擊的位置小於最大高度。

{
g1.setColor(Color.black);//畫筆設成黑色
g1.fillOval(x_click,y_move,5,5);//畫圓,圓點在點擊的X軸,程序界面的最高點,長為5,寬為5
y_move-=5;//最高點-5
r=(((int)Math.round(Math.random()*4321))%200)+55;
g=(((int)Math.round(Math.random()*4321))%200)+55;
b=(((int)Math.round(Math.random()*4321))%200)+55;//rgb是光的三原色,這個就是煙花產生的顏色,這里定義成隨機的,但在一個范圍里
g1.setColor(newColor(r,g,b));//把畫筆改成那個顏色
g1.fillOval(x_click,y_move,5,5);//畫一個這樣的圓
for(intj=0;j<=10;j++){
if(r>55)
r-=20;
if(g>55)
g-=20;
if(b>55)
b-=20;
g1.setColor(newColor(r,g,b));
g1.fillOval(x_click,y_move+j*5,5,5);//這一段都是改變顏色,然後畫圓的
}
g1.setColor(Color.black);
g1.fillOval(x_click,y_move+5*10,5,5);//把上一次畫的彩色圓,用黑色畫一遍,就能讓它消失在背景里

try{
Thread.currentThread().sleep(v++);//讓程序等一下,讓你看到效果,不然畫完的東西一下就不見了,你看不清。
}catch(InterruptedExceptione){
}
}//上面這段代碼是煙花的升上去的那一串東西的效果

for(intj=12;j>=0;j--){
g1.setColor(Color.black);
g1.fillOval(x_click,y_move+(j*5),5,5);
try{
Thread.currentThread().sleep((v++)/3);
}catch(InterruptedExceptione){
}
}//讓最後的那串東西的點消失

y_move=400;
g1.setColor(Color.black);
while(y_move>y_click){
g1.fillOval(x_click-2,y_move,9,5);
y_move-=5;
}//這段不太清楚是干什麼的,我把它去掉,看不出效果的變化

v=15;
for(inti=0;i<=25;i++){
r=(((int)Math.round(Math.random()*4321))%200)+55;
g=(((int)Math.round(Math.random()*4321))%200)+55;
b=(((int)Math.round(Math.random()*4321))%200)+55;
g1.setColor(newColor(r,g,b));
g1.drawOval(x_click-3*i,y_click-3*i,6*i,6*i);
if(i<23){
g1.drawOval(x_click-3*(i+1),y_click-3*(i+1),
6*(i+1),6*(i+1));
g1.drawOval(x_click-3*(i+2),y_click-3*(i+2),
6*(i+2),6*(i+2));
}//上面這段是畫爆炸的效果
try{
Thread.currentThread().sleep(v++);//停一下,看效果
}catch(InterruptedExceptione){
}
g1.setColor(Color.black);
g1.drawOval(x_click-3*i,y_click-3*i,6*i,6*i);//然後畫黑圈,相當於讓彩圈消失。
}
}

publicvoidmousePressed(MouseEvente){//點擊從這里開始~~~~~~~~~~~~~~
x=e.getX();
y=e.getY();//得到滑鼠點擊的坐標
Threadone=newThread(this);//新建一個線程
one.start();//啟動這個線程,到上面的run方法
one=null;//把這個線程置為空,讓它執行完以後就釋放
}

如果你想一下自己寫要怎樣寫這個程序,就很容易理解這個程序了。

一直從下向上畫圓,然後把下面的圓擦掉,就能得到一個向上升的煙花效果,

爆炸效果就是先畫小圓再畫大圓,然後擦掉小圓,再擦掉大圓。

④ 用Java一個簡單的畫圖程序

簡單啊,先引入相應的組件包import java.awt.*;import java.awt.event.*;import javax.swing.*;寫的類要繼承JFrame 接下來就是調用剛剛引入包版裡面的方法了,權paint();這是就思路了。

⑤ 用JAVA編一個小鬧鍾

import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.Timer;

public class Clock extends JFrame implements ActionListener {
public final int HEIGTH = 200, L0 = 50, T0 = 50,N=8;
public final double RAD = Math.PI / 180.0;
int x, y, old_X, old_Y, r, x0, y0, w, h, ang;
int sdo, mdo, hdo, old_M, old_H, hh, mm, ss;
int delay = 1000;
Calendar now;
String st, alarm, Items1, Items2,str[];
JButton jb;
JComboBox jc1, jc2, jc3;
JLabel jl1, jl2, jl3, jl4;
JMenu jm1, jm2, jm3, jm4;
JMenuBar jmb;
JMenuItem jmi1, jmi2, jmi3, jmi4, jmi5, jmi6, jmi7, jmi8, jmi9,jmi10;
JTextField jtf1, jtf2, time;
JPanel jp1, jp2, jp3;
Timer timer;
TimeZone tz = TimeZone.getTimeZone("JST");
Toolkit toolkit=Toolkit.getDefaultToolkit();;
/**
* <br>
* 方法說明:實現ActionListener類必須過載的方法
*/

public static void main(String[] args) {
Clock cp = new Clock();
cp.setVisible(true);
}

Clock() {
super("Java鬧鍾!");
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setSize(550, 700);
setVisible(true);
Container contentPane = getContentPane();

jp2 = new JPanel();

jmb = new JMenuBar();

jm1 = new JMenu("背景顏色設置 ", true);
jmi1 = new JMenuItem("外圈顏色");
jmi1.addActionListener(this);
jmi1.setActionCommand("color1");
jm1.add(jmi1);
jmi2 = new JMenuItem("鬧鍾邊線顏色");
jmi2.addActionListener(this);
jmi2.setActionCommand("color2");
jm1.add(jmi2);
jmi3=new JMenuItem("底盤顏色");
jmi3.addActionListener(this);
jmi3.setActionCommand("color3");
jm1.add(jmi3);
jmi4=new JMenuItem("系統時間背靜顏色");
jmi4.addActionListener(this);
jmi4.setActionCommand("color4");
jm1.add(jmi4);
jmb.add(jm1);

jm2 = new JMenu("指針顏色設置 ", true);
jmi5 = new JMenuItem("秒針顏色");
jmi5.addActionListener(this);
jmi5.setActionCommand("color5");
jm2.add(jmi5);
jmi6 = new JMenuItem("分針顏色");
jmi6.addActionListener(this);
jmi6.setActionCommand("color6");
jm2.add(jmi6);
jmi7 = new JMenuItem("時針顏色");
jmi7.addActionListener(this);
jmi7.setActionCommand("color7");
jm2.add(jmi7);
jmb.add(jm2);

jm3 = new JMenu("鬧鈴聲音設置 ", true);
jmi8 = new JMenuItem("響鈴1");
jmi8.addActionListener(this);
jmi8.setActionCommand("ring1");
jm3.add(jmi8);
jmi9 = new JMenuItem("靜音");
jmi9.addActionListener(this);
jmi9.setActionCommand("ring2");
jm3.add(jmi9);
jmb.add(jm3);

jm4 = new JMenu("幫助 ", true);
jmi10=new JMenuItem("使用說明");
jmi10.addActionListener(this);
jmi10.setActionCommand("help");
jm4.add(jmi10);
jmb.add(jm4);
jp2.add(jmb);

contentPane.add(jp2, BorderLayout.NORTH);

jp3 = new JPanel();
jl1 = new JLabel("鬧鈴時間");
jl1.setFont(new Font("楷體_GB2312", Font.BOLD, 18));
time = new JTextField("00:00", 5);
alarm = time.getText();
jb = new JButton("修改鬧鈴時間");
jb.addActionListener(this);
jb.setActionCommand("CC");
jp3.add(jl1);
jp3.add(time);
jp3.add(jb);
contentPane.add(jp3, BorderLayout.SOUTH);

ClockPanel clock = new ClockPanel();
contentPane.add(clock, BorderLayout.CENTER);

// 窗體添加事件監聽,監聽秒錶的觸發
ActionListener taskPerformer = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
repaint();
}
};
new Timer(delay, taskPerformer).start();
}

/**
* <br>
* 方法說明:繪制圖形
*/

Color C1 = Color.lightGray;// 外圈顏色
Color C2 = Color.black;// 邊線顏色
Color C3 = Color.magenta;// 內盤顏色
Color C4 = Color.blue;// 背景顏色
Color C5 = Color.yellow;// 秒針顏色
Color C6 = Color.green;// 分針顏色
Color C7 = Color.red;//時針顏色
public class ClockPanel extends JPanel {
public void paint(Graphics g) {
h = getSize().height - 200;
// 繪制圓形
g.setColor(C1);
g.fillOval(L0 + 30, T0 + 30, h - 60, h - 60);
g.setColor(C2);
g.drawOval(L0 + 31, T0 + 31, h - 62, h - 62);
g.setColor(C3);
g.fillOval(L0 + 50, T0 + 50, h - 100, h - 100);
g.setColor(C2);
g.drawOval(L0 + 51, T0 + 51, h - 102, h - 102);

r = h / 2 - 30;
x0 = 30 + r - 5 + L0;
y0 = 30 + r - 5 - T0;
ang = 60;
for (int i = 1; i <= 12; i++) {
x = (int) ((r - 10) * Math.cos(RAD * ang) + x0);
y = (int) ((r - 10) * Math.sin(RAD * ang) + y0);
g.drawString("" + i, x, h - y);
ang -= 30;
}
x0 = 30 + r + L0;
y0 = 30 + r + T0;
g.drawString("指針式時鍾", 215, 200);

// 獲取時間
now = Calendar.getInstance();
hh = now.get(Calendar.HOUR_OF_DAY);// 小時
mm = now.get(Calendar.MINUTE);// 分鍾
ss = now.get(Calendar.SECOND);// 秒
g.setColor(C4);
g.fillRect(5, 550, 150, 30);// 填充的矩形
g.setColor(C6);
if (hh < 10)
st = "0" + hh;
else
st = "" + hh;
if (mm < 10)
st = st + ":0" + mm;
else
st = st + ":" + mm;
if(alarm.equals(st))
{
if(toolkit!=null)
toolkit.beep();
else {}
}
if (ss < 10)
st = st + ":0" + ss;
else
st = st + ":" + ss;
{
g.setFont(new Font("華文楷體", Font.BOLD, 16));
g.drawString("系統時間:" + st, 10, 570);
}

// 計算時間和圖形的關系
sdo = 90 - ss * 6;
mdo = 90 - mm * 6;
hdo = 90 - hh * 30 - mm / 2;
// 擦除秒針
if (old_X > 0) {
g.setColor(C3);
} else {
old_M = mdo;
old_H = hdo;
}
// 繪制秒針
g.setColor(C5);
x = (int) ((r - 26) * Math.cos(RAD * sdo) + x0);
y = (int) ((r - 26) * Math.sin(RAD * sdo) + y0) - 2 * T0;
g.drawLine(x0, y0, x, (h - y));

old_X = x;
old_Y = y;

// 擦除分針和時針
if (mdo != old_M) {
g.setColor(C3);
old_M = mdo;
}
if (hdo != old_H) {
g.setColor(C3);
old_H = hdo;
}
// 繪制分針
g.setColor(C6);
x = (int) ((r - 50) * Math.cos(RAD * mdo) + x0);
y = (int) ((r - 50) * Math.sin(RAD * mdo) + y0) - 2 * T0;
g.drawLine(x0, y0, x, (h - y));
// 繪制時針
g.setColor(C7);
x = (int) ((r - 90) * Math.cos(RAD * hdo) + x0);
y = (int) ((r - 90) * Math.sin(RAD * hdo) + y0) - 2 * T0;
g.drawLine(x0, y0, x, (h - y));
} // end paint
}

// 鬧鈴時間的判斷及實現
// 鬧鈴聲音的實現

public void actionPerformed(ActionEvent e) {
// JMenuItem m = (JMenuItem) e.getSource();

if (e.getActionCommand() == "CC") {
int newHou, newMin;
char c;

String getTime = JOptionPane.showInputDialog(this, "請輸入鬧鈴時間格式如:", "00:00");
repaint();

//如果撤消設置時間,就什麼列印null
if(getTime==null)
System.out.println(getTime);
// dispose();

judge: if (getTime != null) {
//列印輸入的設置的時間
System.out.println(getTime);
// 判斷輸入的是不是5位字元
if (getTime.length() != 5) {
JOptionPane.showMessageDialog(time, "格式錯誤\n請按格式輸入5位數字", "Error",
JOptionPane.ERROR_MESSAGE);
repaint();
break judge;
}

// 判斷輸入的是不是數字
for (int i = 0; i < (getTime.length()); i++) {
c = getTime.charAt(i);
if (i == 2 && !Character.isDigit(c))
continue;
// 判斷當前字元,如果不是數字則跳出該事件
if (i != 2 && !Character.isDigit(c)) {
JOptionPane.showMessageDialog(this, "格式錯誤\n請按格式輸入5位數字",
"Error",JOptionPane.ERROR_MESSAGE);
repaint();
break judge;
}
}
char[] hour = { getTime.charAt(0), getTime.charAt(1) };
char[] minute = { getTime.charAt(3), getTime.charAt(4) };
newHou = Integer.parseInt(String.valueOf(hour));
newMin = Integer.parseInt(String.valueOf(minute));
if (newHou >= 24 || newHou < 0) {
JOptionPane.showMessageDialog(this, "格式錯誤\n小時應該是不小於0不大於23的正數",
"Error", JOptionPane.ERROR_MESSAGE);
repaint();
break judge;
}
if (newMin >= 60 || newHou < 0) {
JOptionPane.showMessageDialog(this, "格式錯誤\n分鍾應該是小於60的正數", "Error",
JOptionPane.ERROR_MESSAGE);
repaint();
break judge;
}
new SetTime(newHou, newMin);
}
}

if (e.getActionCommand() == "ring1") {
toolkit=Toolkit.getDefaultToolkit();
}
if(e.getActionCommand() == "ring2"){
System.out.println("靜音");
toolkit=null;

}

if (e.getActionCommand() == "color1") {
String color;
Color c;
System.out.println("color1");
color = JOptionPane.showInputDialog(this, "請輸入喜歡的外圈顏色(0--255)", "128");
if (color == null) {
} else {
if (Integer.parseInt(color) < 0
|| Integer.parseInt(color) > 255)
JOptionPane.showInputDialog(this, "請輸入喜歡的外圈顏色(0--255)", "128");
else {
c = new Color(Integer.parseInt(color));
C1 = c;
}
}
}
if(e.getActionCommand() == "color2"){
String color;
Color c;
System.out.println("color2");
color = JOptionPane.showInputDialog(this, "請輸入喜歡的邊線顏色(0--255)", "128");
if(color==null){}
else{if (Integer.parseInt(color) < 0|| Integer.parseInt(color) > 255)
JOptionPane.showInputDialog(this, "請輸入喜歡的邊線顏色(0--255)", "128");
else {
c = new Color(Integer.parseInt(color));
C2 = c;
}
}
}
if(e.getActionCommand() == "color3"){
String color;
Color c;
System.out.println("color3");
color = JOptionPane.showInputDialog(this, "請輸入喜歡的內盤顏色(0--255)", "128");
if(color==null){}
else{if (Integer.parseInt(color) < 0|| Integer.parseInt(color) > 255)
JOptionPane.showInputDialog(this, "請輸入喜歡的內盤顏色(0--255)", "128");
else {
c = new Color(Integer.parseInt(color));
C3 = c;
}
}
}

if(e.getActionCommand() == "color4"){
String color;
Color c;
System.out.println("color4");
color = JOptionPane.showInputDialog(this, "請輸入喜歡的背景顏色(0--255)", "128");
if(color==null){}
else{if (Integer.parseInt(color) < 0|| Integer.parseInt(color) > 255)
JOptionPane.showInputDialog(this, "請輸入喜歡的背景顏色(0--255)", "128");
else {
c = new Color(Integer.parseInt(color));
C4 = c;
}
}
}
if(e.getActionCommand() == "color5"){
String color;
Color c;
System.out.println("color5");
color = JOptionPane.showInputDialog(this, "請輸入喜歡的秒針顏色(0--255)", "128");
if(color==null){}
else{if (Integer.parseInt(color) < 0|| Integer.parseInt(color) > 255)
JOptionPane.showInputDialog(this, "請輸入喜歡的秒針顏色(0--255)", "128");
else {
c = new Color(Integer.parseInt(color));
C5 = c;
}
}
}
if(e.getActionCommand() == "color6"){
String color;
Color c;
System.out.println("color6");
color = JOptionPane.showInputDialog(this, "請輸入喜歡的分針顏色(0--255)", "128");
if(color==null){}
else{if (Integer.parseInt(color) < 0|| Integer.parseInt(color) > 255)
JOptionPane.showInputDialog(this, "請輸入喜歡的分針顏色(0--255)", "128");
else {
c = new Color(Integer.parseInt(color));
C6 = c;
}
}
}

if(e.getActionCommand() == "color7"){
String color;
Color c;
System.out.println("color7");
color = JOptionPane.showInputDialog(this, "請輸入喜歡的時針顏色(0--255)", "128");
if(color==null){}
else{if (Integer.parseInt(color) < 0|| Integer.parseInt(color) > 255)
JOptionPane.showInputDialog(this, "請輸入喜歡的時針顏色(0--255)", "128");
else {
c = new Color(Integer.parseInt(color));
C7 = c;
}
}
}

if(e.getActionCommand() == "help"){
String help;
help = JOptionPane.showInputDialog(this, "輸入quit退出該鬧鍾的使用", "這是運行在Java中的指針式時鍾");
if(help.equals("quit"))
dispose();
else {}
// timer.restart();
}
}

class SetTime {
String Hour;
String Minute;

public SetTime() { }
public SetTime(int hour, int minute) {
// 當時間參數小於10的時候在前面添加字元0
if (hour < 10) {
Hour = "0" + String.valueOf(hour);
} else {
Hour = "" + String.valueOf(hour);
}
if (minute < 10) {
Minute = "0" + String.valueOf(minute);
} else {
Minute = "" + String.valueOf(minute);
}
alarm = Hour + ":" + Minute;
time.setText(alarm);
repaint();
}
}
}

閱讀全文

與javadrawoval改變字體大小相關的資料

熱點內容
vbnet同步資料庫 瀏覽:314
招商銀行app在哪裡查銀行狀態 瀏覽:124
除了沙發管家還有什麼app 瀏覽:44
蘋果怎麼更改安裝包文件夾 瀏覽:892
40歲以上看什麼app 瀏覽:758
手機網路怎麼這么卡 瀏覽:270
jstab定位 瀏覽:925
win10有產品密匙 瀏覽:971
張藝興微信粉絲群 瀏覽:432
在哪個app看各個博導招生信息 瀏覽:611
hp280prog2mt裝win10 瀏覽:733
linux安裝vnc包 瀏覽:740
哪個網站房子掛牌價靠譜 瀏覽:16
迷你編程迷小酷碎片獲取後怎麼激活 瀏覽:286
微信網頁版登陸地址 瀏覽:628
王菲天空所有版本 瀏覽:489
管理某個設備需要哪些文件 瀏覽:986
怎樣去除word里的分隔符 瀏覽:489
美林數據產品開發部如何 瀏覽:313
zendframework查看版本 瀏覽:140

友情鏈接