(如果點擊按鈕後沒有任何變化,將窗口最小化壹下就有了)
沒有出現這個問題的話,也請告訴我壹下~
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
public class painting extends JFrame implements ActionListener{
private JButton round,rectangle,ellipse,beeline;
private JLabel xaxis,yaxis,remain,information;
private JTextField xTF,yTF;
private BorderLayout layout;
private Container cp;
private JPanel pCenter;
Vector<Object> v=new Vector<Object>(); //定義壹個集合類用於存儲按鈕對象
public painting(){ //構造方法 ------------------框架初始化-------------------
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("painting");
setSize(400,500);
layout = new BorderLayout();
cp = getContentPane();
cp.setLayout(layout);
round= new JButton("畫圓");
rectangle= new JButton("畫矩形");
ellipse= new JButton("畫橢圓");
beeline= new JButton("畫直線");
xaxis=new JLabel("x坐標");
yaxis=new JLabel("y坐標");
remain=new JLabel("右下角坐標(400,500) ");
xTF=new JTextField("0",5);
yTF=new JTextField("0",5);
JPanel pUp= new JPanel();//第壹個面板 在上部
pUp.add(remain);
pUp.add(xaxis);//置兩個文本框
pUp.add(xTF);
pUp.add(yaxis);
pUp.add(yTF);
cp.add(pUp, "North");
//pCenter=new JPanel();//第二個面板 在中部
//pCenter.add(information);//置顯示說明與畫圖區
//cp.add(pCenter,"Center");
JPanel pDown= new JPanel();//第三個面板 在下部
pDown.add(round);// 置四個按鈕
pDown.add(rectangle);
pDown.add(ellipse);
pDown.add(beeline);
cp.add(pDown, "South");
round.addActionListener(this); //置按鈕監聽--------------按鈕行為監聽與響應-------------
rectangle.addActionListener(this);
ellipse.addActionListener(this);
beeline.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {//監聽響應
v.add(e.getSource());//將按鈕情況存入v中
}
public void paint(Graphics g) { //--------------繪圖響應-------------
super.paint(g);
int xx=Integer.parseInt(xTF.getText());//獲取位置值
int yy=Integer.parseInt(yTF.getText());
int size=0;
Object o;
//while(v.size()!=size){//當用戶點擊按鈕選擇某壹種圖形時,v的大小就會比size值大1,當繪圖完成後,v.size又等於size;效果就是:出現點擊 即刻處理
o=v.lastElement();
if(o == round) {g.drawOval(xx,yy,50,50);}
else if (o == rectangle){g.drawRect(xx,yy,100,50);}
else if (o == ellipse) {g.drawOval(xx,yy,100,50);}
else if(o == beeline) {g.drawLine(xx,yy,xx+100,yy);}
size++;
}
}
public static void main(String[] args){ // ------------程序入口-------------
JFrame frame = new painting();
frame.setVisible(true);
}
}