我的java学习笔记(22)关于在框架中显式信息

1.JFrame的结构相当复杂,有四层面板。其中Swing程序员最关心的是内容窗格。

2.绘制一个组件,需要定义一个扩展JComponent的类,并覆盖其中的paintComponent方法。

class Exp extends JComponent
{
	public void paintComponent(Graphics g)
	{
		...
	}
}

3.paintComponent方法有一个Graghics类型的参数,这个参数保存着用于绘制图像和文本的设置。

4.在java中,所有绘制都必须使用Graphics对象。

5.无论何种原因,只要窗口需要重新绘制,事件处理器就会通告组件,从而引发执行所有组件的paintCpmponent方法,所以一定不要自己调用该方法。

6.显式文本使用Graphics类中的drawString方法。

g.drawString(test,x,y);

7.在框架中填入一个或多个组件时,如果你只想使用它们的首选大小,可以调用pack方法,而不是setSize方法。

实例代码

测试类

import java.awt.EventQueue;
import javax.swing.JFrame;

public class test {
	public static void main(String[] args)
	{
		EventQueue.invokeLater(new Runnable()
		{
			public void run()
			{
				JFrame frame = new TextFrame();
				frame.setTitle("test");
				frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				frame.setVisible(true);
			}
		});
	}
}

框架类

import javax.swing.JFrame;

public class TextFrame extends JFrame{
	public TextFrame()
	{
		add(new TextStr());
		pack();
	}
}

绘制类

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;

import javax.swing.JComponent;

public class TextStr extends JComponent {
	public static final int MESSAGE_X = 75;
	public static final int MESSAGE_Y = 50;

	private static final int DEFAULT_WIDTH = 300;
	private static final int DEFAULT_HEIGHT = 200;

	public void paintComponent(Graphics g)
	{
		g.setColor(Color.RED);
		g.drawString("你好啊啊啊啊!!", MESSAGE_X, MESSAGE_Y);
	}

	public Dimension getPreferredSize()
	{
		return new Dimension(DEFAULT_WIDTH,DEFAULT_HEIGHT);
	}

}

输出结果

时间: 2024-11-08 00:47:46

我的java学习笔记(22)关于在框架中显式信息的相关文章

Java学习笔记22

Java集合类是一种特别有用的工具类,可以用于存储数量不等的多个对象,并可以实现常用的数据结构,如:栈. 队列等.除此之外,Java集合类还可用于保存具有映射关系的关联数组.Java集合大致可分为Set.List和Map三种 状态,其中Set代表无序.不可重复的集合:List代表有序.重复的集合:而Map代表具有映射关系的集合. Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又 包含了一些子接口或实现类.

Java学习笔记--第一个Hibernate框架程序

程序结构 1.建表 本例选择Sql Server2008作为数据库 在MySQL中新增一个ztest数据库,建立 CUSTOMER 表 CREATE TABLE CUSTOMER ( CID INTEGER NOT NULL PRIMARY KEY, USERNAME VARCHAR(12) NOT NULL, PASSWORD VARCHAR(12) ); 2.创建PO对象 补充:POJO是Plain OrdinaryJava Object的缩写,它通指没有使用Entity Beans的普通j

Java学习笔记29(集合框架三:泛型)

泛型的概念: 简单地讲,就是同一个方法(类),可以接受不同的数据类型并运行得到相对应的结果,不会出现安全问题 上一篇有一段这样的代码: 没有定义集合类型.迭代器类型 package demo; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class CollectionDemo { public static void main(String[] args)

Java学习笔记30(集合框架四:List接口)

List接口继承自Collection接口 具有重要的三大特点: 1.有序集合:存入和取出的顺序一致 2.此接口的用户可以对列表中每个元素插入位置精确的控制:可以通过索引操作 3.可以存储重复元素 List接口的特有方法(与索引有关): package demo; import java.util.List; import java.util.ArrayList; //List接口继承Collection接口,下有很多实现类 //例如ArrayList public class ListDemo

Java学习笔记33(集合框架七:Collections工具类)

数组有工具类,方面操作数组 集合也有工具类:Collections 常用方法示例: package demo; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class CollectionDemo { public static void main(String[] args) { function1(); function2(); function3(); } p

Java学习笔记32(集合框架六:Map接口)

Map接口与Collection不同: Collection中的集合元素是孤立的,可理解为单身,是一个一个存进去的,称为单列集合 Map中的集合元素是成对存在的,可理解为夫妻,是一对一对存进去的,称为双列集合 Map中存入的是:键值对,键不可以重复,值可以重复 Map接口中的常用集合: 1.HashMap:哈希表的存储结构,但是无法保证存取顺序 2.LinkedHashMap:存储数据采用的是哈希表和链表,可以有顺序 Map接口的常用方法: 示例: package demo; import ja

Java学习笔记34(集合框架八:综合案例:模拟斗地主的洗牌发牌)

规则: 1.54张扑克牌,有花色 2.顺序打乱,一人一张依次发牌,一人17张,留三张作为底牌 3.看牌:按大小王2A....43的序排列打印 示例: package demo; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; public class DouDiZhu { public static void main(String[] args) { // 创建Map集合,键

java学习笔记3——java关键字

java学习笔记3——java关键字 虽然老师说不用刻意的去记忆,但是我还是在网上找到了非常详细的注解,再次收藏 关键字的类型表: 各个关键字的详细注解和实例,按首字母排序: 1.abstract abstract 关键字可以修改类或方法. abstract 类可以扩展(增加子类),但不能直接实例化. abstract 方法不在声明它的类中实现,但必须在某个子类中重写. -示例- public abstract class MyClass{ } public abstract String my

【Java学习笔记之二十六】深入理解Java匿名内部类

在[Java学习笔记之二十五]初步认知Java内部类中对匿名内部类做了一个简单的介绍,但是内部类还存在很多其他细节问题,所以就衍生出这篇博客.在这篇博客中你可以了解到匿名内部类的使用.匿名内部类要注意的事项.如何初始化匿名内部类.匿名内部类使用的形参为何要为final. 一.使用匿名内部类内部类 匿名内部类由于没有名字,所以它的创建方式有点儿奇怪.创建格式如下: new 父类构造器(参数列表)|实现接口() { //匿名内部类的类体部分 } 在这里我们看到使用匿名内部类我们必须要继承一个父类或者