在组件中显示信息:
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Toolkit;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class SimpleFrameTest extends JFrame{
public static void main(String[] args) {
// 事件调度线程
EventQueue.invokeLater(new Runnable(){
@Override
public void run() {
//创建一个窗体
SimpleFrame sFrame = new SimpleFrame();
//设置窗体为可见
sFrame.setVisible(true);
//设置默认关闭草操作为退出程序
sFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
});
}
}
class SimpleFrame extends JFrame {
//构造方法
public SimpleFrame() {
//设置窗体的标题
setTitle("MyTitle");
//通过Toolkit类的静态方法获得Toolkit对象
Toolkit kit = Toolkit.getDefaultToolkit();
//通过kit对象的getScreenSize()方法获得Dimension对象
Dimension screenSize = kit.getScreenSize();
//获得屏幕的宽度
int screenWidth = screenSize.width;
//获得屏幕的高度
int screenHeight = screenSize.height;
//设置窗体的宽度、高度
setSize(screenWidth/2,screenHeight/2);
//创建一个Panel容器
NotePanel panel = new NotePanel();
//panel容器添加到sFrame窗体中
add(panel);
}
}
class NotePanel extends JPanel{
private static final int MESSAGE_Y = 75;
private static final int MESSAGE_X = 100;
public void paintComponent(Graphics g){
//在panel中描绘出字符串
g.drawString("This is a test for JPanel", MESSAGE_X, MESSAGE_Y);
}
}
何种类型的动作会触发paintComponet()方法自动响应?
1、在用户扩大窗口或者极小化窗口,然后又恢复窗口大小时
2、用户弹出一个窗口,并且这个窗口覆盖一个已经存在的窗口,使得覆盖的窗口不可见,重现窗口时会调用
如果需要强制刷新屏幕,就需要repaint()方法,而不是paintComponet()。它将引发采用响应配置的Graphics对像调用所有组建的paintComponent()。