TestPanel
这里是把TestPanel作为JFrame的content pane来使用, 我使用的方式是写新类来继承TestPanel
功能:
1.测试组件
2.自定义paint(Graphics g) 方法
3.可便捷地使用Timer
package test.any;
import java.awt.Graphics;
import java.awt.RenderingHints;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;
/**
* 可不使用Timer, 条件:(flag=0)
* @author Linkeo
*
*/
@SuppressWarnings("serial")
public abstract class TestPanel extends JPanel implements ActionListener{
public int PANEL_WIDTH,PANEL_HEIGHT;
public boolean INITIALIZED = false;
public JFrame frame;
public Timer timer;
public TestPanel(int width, int height, int flag){
PANEL_WIDTH = width;
PANEL_HEIGHT = height;
setBounds(0, 0, PANEL_WIDTH, PANEL_HEIGHT);
frame = new JFrame("Test - Linkeo");
frame.setContentPane(this);
frame.pack();
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
if(flag>0)
timer = new Timer(flag, this);
}
public void startTest(){
frame.setVisible(true);
frame.setSize(frame.getWidth()+PANEL_WIDTH-this.getWidth(), frame.getHeight()+PANEL_HEIGHT-this.getHeight());
frame.setLocationRelativeTo(null);
if(timer!=null)
timer.start();
else
actionPerformed(null);
}
public abstract void init();
@Override
public void actionPerformed(ActionEvent e){
if(!INITIALIZED){
init();
INITIALIZED = true;
}
run();
}
public abstract void run();
@Override
public void paint(Graphics g){
super.paint(g);
}
public static void render(Graphics g){
((java.awt.Graphics2D) g).setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
((java.awt.Graphics2D) g).setRenderingHint(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY);
}
}