JAVA笔记【20131215】

来源:互联网 发布:origin作图软件ios 编辑:程序博客网 时间:2024/06/11 14:05

图形程序设计

一、创建框架

Java中顶层窗口叫做框架(Frame)。JFrame是极少数几个不绘制在画布上的Swing组件之一,它的修饰部件由用户的窗口系统绘制。而不是由Swing绘制。

import javax.swing.*;import java.awt.*;import java.util.Locale;public class SimpleFrameTest{public static void main(String[] args){SimpleFrame sp = new SimpleFrame();Toolkit tkt = Toolkit.getDefaultToolkit();Image img = tkt.getImage("2b.jpg");sp.setIconImage(img); //设置框架图标sp.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  //关闭窗口是操作sp.setAlwaysOnTop(true); //设置窗口始终位于其他窗口上方//sp.show();    //已过时显示窗口方法sp.setBackground(Color.BLUE);sp.setForeground(Color.CYAN);sp.setLocale(Locale.CHINA); //设置组件语言环境sp.setLocation(295,192); //将组件移到新位置sp.setVisible(true);  //显示组件sp.setTitle("SimpleWindow"); //标题栏JOptionPane.showMessageDialog(sp,"Quit Programe?");sp.setSize(sp.getMaximumSize()); //最大组件大小JOptionPane.showMessageDialog(sp,"Quit Programe?");sp.setSize(sp.getMinimumSize()); //最小组件大小JOptionPane.showMessageDialog(sp,"Quit Programe?");sp.setBounds(0,0,300,200); //设置组件显示位置和大小JOptionPane.showMessageDialog(sp,"Quit Programe?");sp.dispose();  //关闭窗口,并回收创建窗口所使用的全部资源}}class SimpleFrame extends JFrame{public SimpleFrame(){setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);  //设置组件宽度和高度setResizable(false);  //设置组件大小是否可调节}public static final int DEFAULT_WIDTH = 600;public static final int DEFAULT_HEIGHT = 300;}


二、在面板中显示信息。

JPanel类的paintComponent方法。

class MyPanel extends JPanel{public void paintComponent(Graphics g){//..................}}

不管何种原因,只要窗口需要重新绘图,事件处理器就会通知组件,从而引发所有组件的paintComponent方法。一定不要自己调用paintComponent方法。

import javax.swing.*;import java.awt.*;public class SimpleFrameTest01{public static void main(String[] args){SimpleFrame sp = new SimpleFrame();sp.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  //关闭窗口是操作//sp.show();    //已过时显示窗口方法sp.setVisible(true);  //显示组件sp.setTitle("SimpleWindow"); //标题栏}}class SimpleFrame extends JFrame{public SimpleFrame(){MyPanel mp = new MyPanel();setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);  //设置组件宽度和高度setResizable(false);  //设置组件大小是否可调节add(mp);}public static final int DEFAULT_WIDTH = 600;public static final int DEFAULT_HEIGHT = 300;}class MyPanel extends JPanel{public void paintComponent(Graphics g){super.paintComponent(g);g.drawString("FirstGraph",StringX,StringY);}public static final int StringX=255;public static final int StringY=150;}

三、2D图形

Graphics类的子类Graphics2D类有更强大的绘图功能。

paintComponent方法会自动获得一个Graphics2D类对象,只要进行一次类型转换即可。

public void paintComponent(Graphics g){Graphics2D gps2D = (Graphics2D)g; //..............................}

Graphics和Graphics2D均抽象类,是不可实例化的,此处g的类型是sun.java2d.SunGraphics2D的,是由虚拟机传过来的。

import javax.swing.*;import java.awt.*;public class SimpleFrameTest02{public static void main(String[] args){SimpleFrame sp = new SimpleFrame();sp.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  //关闭窗口是操作//sp.show();    //已过时显示窗口方法sp.setVisible(true);  //显示组件sp.setTitle("SimpleWindow"); //标题栏}}class SimpleFrame extends JFrame{public SimpleFrame(){MyPanel mp = new MyPanel();setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);  //设置组件宽度和高度setResizable(false);  //设置组件大小是否可调节add(mp);}public static final int DEFAULT_WIDTH = 600;public static final int DEFAULT_HEIGHT = 300;}class MyPanel extends JPanel{public void paintComponent(Graphics g){super.paintComponent(g);g.drawString("FirstGraph",StringX,StringY);System.out.println(g.getClass().getName());Graphics2D gps2D = (Graphics2D)g ;gps2D.draw3DRect(255,150,50,60,true); }public static final int StringX=255;public static final int StringY=150;}


0 0
原创粉丝点击