您的位置:首页 > 编程语言 > Java开发

JAVA笔记【20131215】

2013-12-15 23:02 330 查看
图形程序设计

一、创建框架

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息