jdk1.6中的新特性

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhouqi724/article/details/564272

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开头或结尾。
  

阅读更多

没有更多推荐了,返回首页