結果展示:
源碼:
`package demo01;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
- 測試:按鈕控制繪畫圖形
- @author Smilexs
*/
public class DemoPanel implements ActionListener{
private JFrame frame = null;
private JPanel drawArea = null;//繪畫區域
private Button btnNext = null;//顯示下一個繪畫的圖
private static final int DRAW_LINE=0;//畫直線
private static final int DRAW_RECT=1;//畫矩形
public DemoPanel() {
frame = new JFrame("測試面板");
drawArea= new TestPanel(DemoPanel.DRAW_LINE);
btnNext =new Button("下一個");
/**按鈕監聽*/
btnNext.addActionListener(this);
frame.setLayout(new BorderLayout());
frame.add(drawArea,BorderLayout.CENTER);
frame.add(btnNext,BorderLayout.SOUTH);
frame.setBounds(0,0,500,500);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.setVisible(true);
}
/**
* 繪畫面板
* @author lenovo
*
*/
class TestPanel extends JPanel{
private int drawType=0;//繪畫類型
public TestPanel(int drawType){
this.drawType=drawType;
}
@Override
public void paint(Graphics g) {
super.paint(g);//畫筆
switch (drawType) {
case 0:
g.drawLine(0, 0, 100, 100);
break;
case 1:
g.drawRect(0, 0, 250, 250);
break;
default:
break;
}
}
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==btnNext){
frame.remove(drawArea);
drawArea = new TestPanel(DemoPanel.DRAW_RECT);
frame.add(drawArea,BorderLayout.CENTER);
/** 重點: 一定要 更新界面!!!*/
frame.revalidate();
}
}
public static void main(String[] args) {
new DemoPanel();
}
}
`