java中swing和awt是不能混用的 ,会容易出现组件的遮挡问题。
顶层窗口--框架。swing组件中的该组件是JFrame,诸多窗体常用方法,要常翻阅帮助文档。
窗体初始像素0*0,需要设置显示尺寸,对于不同像素的显示器,显示效果可能不同,为了能达到相同的效果,需要用Toolkit获得设备的屏幕分辨率。
如下例子:
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.WindowAdapter;
import javax.swing.JFrame;
public class CenterFrame {
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame frame=new Frame();
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(){
System.exit(0);
}
});
frame.setVisible(true);
}
}
class Frame extends JFrame{
Frame(){
setTitle("本窗口在屏幕中央显示");
Toolkit toolkit=Toolkit.getDefaultToolkit();//获得工具类
Dimension screensizeDimension=toolkit.getScreenSize();//获得显示器尺寸
int screenHeight=screensizeDimension.height;
int screenWidth=screensizeDimension.width;
setSize(screenWidth/2,screenHeight/2);
setLocation( screenWidth/4,screenHeight/4);
this.repaint();//重绘窗体
}
}
将菜单按钮添加到一个组件上,然后这个组件添加到窗体上,这种组件存放 的几何叫做--------面板。
panel{1:可以在上边完成绘制工作 2:存放其它组件}
实现它的两个步骤:
{1:定义一个类继承panel类 2:重写paintComponent方法}
import java.awt.Container;
import java.awt.Graphics;
import java.awt.event.WindowAdapter;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class UsePanel {
public static void main(String[] args) {
PanelFrame panelFrame=new PanelFrame();
panelFrame.addWindowListener(new WindowAdapter() {
public void windowClosing(){
System.exit(0);
}
});
}
class PanelFrame extends JFrame{
public PanelFrame(){
setTitle("使用面板");
setSize(400, 300);
setVisible(true);
JPanel jPanel=new Mypanel();
Container container=getContentPane();
container.add(jPanel);
}
}
class Mypanel extends JPanel{
public void paintComponent(Graphics g){
g.drawString("我是显示在面板上的信息哟", 120, 100);
}
}
}
编译时出现了错误No enclosing instance of type UsePanel is accessible. Must qualify the alloc。
下一节看事件处理。