java Swing 学习日记
来源:互联网 发布:星际争霸1汉化软件 编辑:程序博客网 时间:2024/06/13 23:11
package swing;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.font.FontRenderContext;
import java.awt.geom.Line2D;
import java.awt.geom.Rectangle2D;
import javax.swing.ImageIcon;
import javax.swing.JComponent;
import javax.swing.JFrame;
/**
*
* 添加图片 ,画图形,画文字
*/
public class ImageTest {
/**
* @param args
*/
public static void main( String[] args ) {
// TODO Auto-generated method stub
// 开启一个线程,所有的Swing组件必须由事件分派线程进行配置,线程将鼠标点击和按键控制转移到用户接口组件。
EventQueue.invokeLater( new Runnable() {
// 匿名内部类,是一个Runnable接口的实例,实现了run方法
public void run() {
JFrame frame = new ImageFrame();
// 创建下面自己定义的SimpleFrame类对象,以便于调用构造器方法
frame.setTitle( "ImageTest" );
// 设置标题
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
// 选择当用户关闭框架的时候进行的操作 ,在有些时候需要将窗口隐藏,不能直接退出需要用到这个方法
frame.setVisible( true );
// 将窗口可见化,这样以便用户在第一次看见窗口之前我们能够向其中添加内容
}
} );
}
}
class ImageFrame extends JFrame {
public ImageFrame() {
add( new ImageComponent() );
// 向其中添加一个实例化的实现JComponent类的子类
pack();
// 调用框架组件的首选大小,或者我们可以用SetSize方法来替换它
}
}
class ImageComponent extends JComponent {
private static final int DEFAULT_WIDTH = 500;
private static final int DEFAULT_HEIGHT = 500;
private Image image;
/**
* ImageComponent的构造函数,用来实例化图片
*/
public ImageComponent() {
image = new ImageIcon( "D:/feng.jpg" ).getImage();
// 通过路径得到图片
}
/**
* 我们覆盖了这个以用来做一些工作
*
* @param g
*
*/
public void paintComponent( Graphics g ) {
if( image == null )
return;
// 如果图片不正确,则直接返回避免发生错误
g.drawImage( image, 55, 55, 200, 200, null );
Graphics2D g2 = ( Graphics2D )g;
g2.setPaint( Color.RED );
// g2.draw( new Line2D.Double( 0, 201, 201, 201 ) );
g2.draw( new Rectangle2D.Double( 50, 50, 210, 210 ) );
// 在画布上给出图片
String message = "Hello World!";
// 写出我们要操作的文字
Font f = new Font( "Dialog", Font.BOLD, 36 );
g2.setFont( f );
FontRenderContext context = g2.getFontRenderContext();
// 通过调用方法,得到屏幕设备字体属性的描述对象
Rectangle2D bounds = f.getStringBounds( message, context );
g2.drawString( message, 55, 300 );
g2.draw( new Rectangle2D.Double( 55, 300 - bounds.getHeight(), bounds.getWidth(), bounds.getHeight() ) );
g2.draw( new Line2D.Double( 55, 300, bounds.getWidth(), 300 ) );
}
/**
* 我们覆盖了这个方法来表示出这个类的组件的大小
*
* @return 返回这个类的组件本身应该有多大
*/
public Dimension getPreferredSize() {
return new Dimension( DEFAULT_WIDTH, DEFAULT_HEIGHT );
// 返回一个Dimension对象,表示这个组件的大小
}
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.font.FontRenderContext;
import java.awt.geom.Line2D;
import java.awt.geom.Rectangle2D;
import javax.swing.ImageIcon;
import javax.swing.JComponent;
import javax.swing.JFrame;
/**
*
* 添加图片 ,画图形,画文字
*/
public class ImageTest {
/**
* @param args
*/
public static void main( String[] args ) {
// TODO Auto-generated method stub
// 开启一个线程,所有的Swing组件必须由事件分派线程进行配置,线程将鼠标点击和按键控制转移到用户接口组件。
EventQueue.invokeLater( new Runnable() {
// 匿名内部类,是一个Runnable接口的实例,实现了run方法
public void run() {
JFrame frame = new ImageFrame();
// 创建下面自己定义的SimpleFrame类对象,以便于调用构造器方法
frame.setTitle( "ImageTest" );
// 设置标题
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
// 选择当用户关闭框架的时候进行的操作 ,在有些时候需要将窗口隐藏,不能直接退出需要用到这个方法
frame.setVisible( true );
// 将窗口可见化,这样以便用户在第一次看见窗口之前我们能够向其中添加内容
}
} );
}
}
class ImageFrame extends JFrame {
public ImageFrame() {
add( new ImageComponent() );
// 向其中添加一个实例化的实现JComponent类的子类
pack();
// 调用框架组件的首选大小,或者我们可以用SetSize方法来替换它
}
}
class ImageComponent extends JComponent {
private static final int DEFAULT_WIDTH = 500;
private static final int DEFAULT_HEIGHT = 500;
private Image image;
/**
* ImageComponent的构造函数,用来实例化图片
*/
public ImageComponent() {
image = new ImageIcon( "D:/feng.jpg" ).getImage();
// 通过路径得到图片
}
/**
* 我们覆盖了这个以用来做一些工作
*
* @param g
*
*/
public void paintComponent( Graphics g ) {
if( image == null )
return;
// 如果图片不正确,则直接返回避免发生错误
g.drawImage( image, 55, 55, 200, 200, null );
Graphics2D g2 = ( Graphics2D )g;
g2.setPaint( Color.RED );
// g2.draw( new Line2D.Double( 0, 201, 201, 201 ) );
g2.draw( new Rectangle2D.Double( 50, 50, 210, 210 ) );
// 在画布上给出图片
String message = "Hello World!";
// 写出我们要操作的文字
Font f = new Font( "Dialog", Font.BOLD, 36 );
g2.setFont( f );
FontRenderContext context = g2.getFontRenderContext();
// 通过调用方法,得到屏幕设备字体属性的描述对象
Rectangle2D bounds = f.getStringBounds( message, context );
g2.drawString( message, 55, 300 );
g2.draw( new Rectangle2D.Double( 55, 300 - bounds.getHeight(), bounds.getWidth(), bounds.getHeight() ) );
g2.draw( new Line2D.Double( 55, 300, bounds.getWidth(), 300 ) );
}
/**
* 我们覆盖了这个方法来表示出这个类的组件的大小
*
* @return 返回这个类的组件本身应该有多大
*/
public Dimension getPreferredSize() {
return new Dimension( DEFAULT_WIDTH, DEFAULT_HEIGHT );
// 返回一个Dimension对象,表示这个组件的大小
}
}
转载自:http://blog.csdn.net/QuinnNorris/article/details/55667020?locationNum=5&fps=1
阅读全文
0 0
- java Swing 学习日记
- JAVA学习日记初涉SWING
- Java学习中--swing
- JAVA SWING学习总结
- java swing学习笔记
- Java Swing学习经验
- Java Swing 学习笔记
- java Swing学习笔记
- java swing 学习
- java Swing学习笔记
- Java Swing学习小结
- java swing学习
- java swing编程学习
- Java swing初步学习
- Java Swing学习笔记
- java swing编程学习
- 学习笔记-Java swing
- java学习日记(线程)
- github常见错误
- centos /dev/vda1磁盘空间占满 随笔
- 互联网分层架构,为啥要前后端分离?
- 51Nod
- python之windows安装mysql-python模块
- java Swing 学习日记
- unable to connect to 172.20.10.10:5555 解决办法
- 121-Best Time to Buy and Sell Stock
- 数据结构实验之图论五:从起始点到目标点的最短步数(BFS)
- 在ubuntu中安装单机Hadoop(四)
- 进行累加运算
- 人事管理系统之部门结构树的展示
- 数的输入与输出
- 【Java高并发学习】读写锁、倒计时器、LockSupport、线程池