当前位置:  技术问答>java相关

怎样实现java.awt.FileDialog.setFilenameFilter 方法

    来源: 互联网  发布时间:2015-03-03

    本文导语:  有代码最好。 | Bug Id  4031440   Votes  488   Synopsis  FileDialog doesn't call FilenameFilter.accept()   Category  java:classes_awt   Reported Against  1.1beta3, atlantis_dev2, 1.1.4, 1.0beta2, 3.1, 1.0.2, 1.1beta1, 1.1...

有代码最好。

|
Bug Id  4031440
 
Votes  488
 
Synopsis  FileDialog doesn't call FilenameFilter.accept()
 
Category  java:classes_awt
 
Reported Against  1.1beta3, atlantis_dev2, 1.1.4, 1.0beta2, 3.1, 1.0.2, 1.1beta1, 1.1.2, 1.2beta3, 1.1.6, 1.2beta4, 1.1.7a, 1.2.2, kestrel, 1.1.3, 1.0.1, 1.1.1
 
Release Fixed   
 
State  Closed, will not be fixed
 
Related Bugs  1243038, 4024056, 4044943, 4062249, 4067485, 4265223
 
Submit Date  Feb 10, 1997 
 
Description  FileDialog doesn't call FilenameFilter.accept().

--------------------------------------------------------------------------------





Windows NT 4.0, Service Pack 2
Pentium 120

Add a System.out.println to the accept method of Main.java
Compile the example (from Java Class examples (from 1.0.2, in which the bug
also manifests itself)).
Run using java Main
Put any filter in you wish, the accept method is never called, and the list is
not filtered.


Code for Main.java follows:

import java.awt.*;
import java.io.*;
class Main extends Frame implements FilenameFilter {
    FileDialog fd;
    TextField tfDirectory = new TextField();
    TextField tfFile = new TextField();
    TextField tfFilter = new TextField();

    Main() {
        super("FileDialog Example");
        add("West", new Button("Load"));
        add("East", new Button("Save"));

        Panel p = new Panel();
        p.setLayout(new GridBagLayout());
        addRow(p, new Label("directory:", Label.RIGHT), tfDirectory);
        addRow(p, new Label("file:", Label.RIGHT), tfFile);
        addRow(p, new Label("filter:", Label.RIGHT), tfFilter);

        add("South", p);
        pack();
        show();
    }

    // Adds a row in a gridbag layout where the c2 is stretchy
    // and c1 is not.
    void addRow(Container cont, Component c1, Component c2) {
        GridBagLayout gbl = (GridBagLayout)cont.getLayout();
        GridBagConstraints c = new GridBagConstraints();
        Component comp;

        c.fill = GridBagConstraints.BOTH;
        cont.add(c1);
        gbl.setConstraints(c1, c);

        c.gridwidth = GridBagConstraints.REMAINDER;
        c.weightx = 1.0;
        cont.add(c2);
        gbl.setConstraints(c2, c);
    }

    public boolean accept(File dir, String name) {
System.out.println("File "+dir+" String "+name);
        if (fd.getMode() == FileDialog.LOAD) {
            return name.lastIndexOf(tfFilter.getText()) > 0;
        }
        return true;
    }

    public boolean action(Event evt, Object what) {
        boolean load = "Load".equals(what);

        if (load || "Save".equals(what)) {
            fd = new FileDialog(this, null,
                load ? FileDialog.LOAD : FileDialog.SAVE);
            fd.setDirectory(tfDirectory.getText());
            fd.setFile(tfFile.getText());
            fd.setFilenameFilter(this);
            fd.show();
            tfDirectory.setText(fd.getDirectory());
            tfFile.setText(fd.getFile());

            // Filter must be the same
            if (fd.getFilenameFilter() != this) {
                throw new RuntimeException("Internal error");
            }
            return true;
        }
        return false;
    }

    static public void main(String[] args) {
        new Main();
    }

}





 

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • html<pre>标签自动换行实现方法
  • 求在freebsd+Squid下实现pc上网的透明代理的实现方法!给出具体配置方法的高分谢!
  • java tomcat实现Session对象的持久化原理及配置方法介绍
  • 菜鸟提问:一个类实现了一个接口,除了要定义接口的所有方法外,可不可以再添加其他方法?
  • Session id实现通过Cookie来传输方法及代码参考
  • 实现在同一方法中获取当前方法中新赋值的session值解决方法
  • JavaScript实现页面跳转的几种方法(参考代码)
  • 弱智问题:我们怎么才知道要使用的方法需要实现什么接口才能使用这个方法呢?
  • java实现判断字符串是否全是数字的四种方法代码举例
  • 自己实现strcpy函数的实现方法
  • 网站到底怎么实现盈利赚钱:个人网站赚钱方法大总结
  • php通过数组实现多条件查询实现方法(字符串分割)
  • java 与 C++ 实现后绑定的方法
  • 在Servlet中方法doGet和doPost分别实现什么功能,Html中表单的get、post方法我就不明白
  • DevExpress实现GridControl显示Gif动画的方法
  • Collections.sort()方法,已经实现Comparable接口,为什么无法将Vector排序?
  • C#实现获取枚举中元素个数的方法
  • 请问聊天室中显示用户在线离线的原理是怎样?有哪些方法实现呢?
  • 请问jdk源程序中,许多native方法是怎么实现的?
  • c# 重载WndProc,实现重写“最小化”的实现方法
  • mysql中文排序注意事项与实现方法
  • 通过javascript实现DIV居中,兼容各浏览器版本
  • socket实现多文件并发传输,求助多线程实现问题?
  • Python GUI编程:tkinter实现一个窗口并居中代码
  • interface 到底有什么用???实现接口,怎么实现??
  • 通过javascript库JQuery实现页面跳转功能代码
  • 怎么用Jsp实现在页面实现树型结构?
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • windows 下的PortTunnel 在linux下怎么实现?或者相应的已经实现的软件?端口映射
  • php实现socket实现客户端和服务端数据通信源代码
  • 网站重定向用C语言实现iptables,ACL实现


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3