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

jdk1.6中的新特性

2005-12-28 17:43 169 查看
1、程序启动画面
1.6里面新增了启动画面的功能,
命令行方式:java -splash:图片名 java文件。图片格式为GIF, PNG, or JPEG格式,当第一个窗体启动时,启动画面就会消失。
jar方式:首先创建manifest.mf文件. 内容如下:
Manifest-Version: 1.0
Main-Class: HelloSplash
SplashScreen-Image: MyImage.png
打包jar文件:
jar -mcvf manifest.mf Splash.jar HelloSplash*.class MyImage.png
不用命令行运行启动画面:
java -jar Splash.jar
运用java.awt包内的SplashScreen类:
getSplashScreen()方法返回生成启动画面,如果没有image被创建,则返回null
其他的方法如:
getBounds() 返回启动画面的边界大小
getImageURL() 返回启动画面的图片url
getSize() 返回启动画面窗体的大小
isVisible() 启动画面是否显示
在应用程序启动之前,当启动画面加载后,可以改变显示的图片,有2个方法可以实现:
setImageURL():设置一个新显示图片的URL;
getGraphics():得到窗体的graphic内容(java.awt.Graphics),然后使用任何通常的graphical和Java2D的API去更新图片,因为这是一个Graphics2D的实例,
而不是简单的java.awt.Graphics.在你画上graphic内容后,可以调用SplashScreen的update()方法去画更新后的图片。
例子:
import javax.swing.*;
import java.awt.*;
import java.awt.geom.*;
import java.util.*;
public class ExtendedSplash {
public static void main(String args[]) {
Runnable runner = new Runnable() {
public void run() {
Random random = new Random();
SplashScreen splash = SplashScreen.getSplashScreen();
Graphics2D g = (Graphics2D)splash.getGraphics();
Dimension dim = splash.getSize();
Color colors[] = {Color.RED, Color.ORANGE,
Color.YELLOW, Color.GREEN, Color.BLUE,
Color.MAGENTA};
for (int i=0; i<100; i++) {
g.setColor(colors[i % colors.length]);
g.fillRect(50, 50, dim.width-100, dim.height-100);
splash.update();
try {
Thread.sleep(250);
} catch (InterruptedException ignored) {
}
}
JFrame frame = new JFrame("Splash Me2");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel label =
new JLabel("Hello, Splash", JLabel.CENTER);
frame.add(label, BorderLayout.CENTER);
frame.setSize(300, 95);
frame.setVisible(true);
}
};
EventQueue.invokeLater(runner);
}
}

2、JTable的排序、高亮显示和过滤
排序:
抽象类RowSorter
实现排序的主要代码:
JTable table = new JTable(model);//生成指定模式的表格
RowSorter<TableModel> sorter =
new TableRowSorter<TableModel>(model);//生成一个RowSorter对应于表格模式
table.setRowSorter(sorter);//设置表格的RowSorter
如果想在排序时添加自己的动作,则可以对RowSorter实现RowSorterListener
实现的方法:void sorterChanged(RowSorterEvent e)
过滤:
抽象类RowFilter
提供一个实现过滤的方法:boolean include(RowFilter.Entry<? extends M,? extends I> entry)
RowFilter提供6个方法生成过滤器:
* andFilter(Iterable<? extends RowFilter<? super M,? super I>> filters)
* dateFilter(RowFilter.ComparisonType type, Date date, int... indices)
* notFilter(RowFilter<M,I> filter)
* numberFilter(RowFilter.ComparisonType type, Number number, int... indices)
* orFilter(Iterable<? extends RowFilter<? super M,? super I>> filters)
* regexFilter(String regex, int... indices)

其中regexFilter中的参数regex是要过滤的文本,以"^"或者"$"开头,表示过滤是否以开regex开头或结尾。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: