Java之按鈕控制重繪面板

結果展示:
這裏寫圖片描述
這裏寫圖片描述

源碼:
`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();
}

}
`

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章