小编Sir*_*gin的帖子

重写MouseListener方法,但编译器另行声明吗?

        JTextArea messageDisplayArea=new JTextArea();
        messageDisplayArea.addMouseListener(new MouseListener(){
            public void mouseEntered(MouseEvent m){
                JOptionPane.showMessageDialog(null,"a");
            }
        });
        messageDisplayArea.addMouseListener(new MouseListener(){
            public void mouseExited(MouseEvent m){

            }
        });
        messageDisplayArea.addMouseListener(new MouseListener(){
            public void mouseClicked(MouseEvent m){

            }
        });
        messageDisplayArea.addMouseListener(new MouseListener(){
            public void mousePressed(MouseEvent m){

            }
        });
        messageDisplayArea.addMouseListener(new MouseListener(){
            public void mouseReleased(MouseEvent m){

            }
        });
Run Code Online (Sandbox Code Playgroud)

这是我的代码的一部分,我已经导入了java.awt。*和java.awt.event。*和javax.swing。*,但是尚未实现MouseListener接口。我已经从MouseListener接口重写了所有方法,但是编译器引发了5个错误,所有错误都表明该类不是抽象的,并且不重写MouseListener中的抽象方法。我究竟做错了什么?

java overriding abstract mouselistener

6
推荐指数
1
解决办法
1759
查看次数

RandomAccessFile.seek()如何工作?

根据API,这些是事实:

  • seek(long bytePosition)简单的说法,将指针移动到与指定的位置bytePosition的参数。
  • bytePosition大于文件长度时,除非在(新)末尾写入一个字节,否则文件长度不会改变。
  • 如果以跳过的长度存在数据,则这些数据将保持不变。

但是,我好奇的情况是:当有一个没有数据的文件(0字节)时,我执行以下代码:

file.seek(100000-1);
file.write(0);
Run Code Online (Sandbox Code Playgroud)

所有的100,000个字节0几乎立即被填满。我可以说10毫秒超过200GB。

但是,当我尝试使用其他方法(例如BufferedOutputStream同一进程)写入100000字节时,将花费几乎无限长的时间。

时间差异的原因是什么?有没有更有效的方法来创建n字节文件并用0s 填充?

编辑: 如果没有实际写入数据,文件中如何填充数据?示例代码:

RandomAccessFile out=new RandomAccessFile("D:/out","rw");
out.seek(100000-1);
out.write(0);
out.close();
Run Code Online (Sandbox Code Playgroud)

这是输出:

输出量

另外,如果文件足够大,由于空间不足,我将无法再写入磁盘。

java file bufferedoutputstream randomaccessfile

2
推荐指数
1
解决办法
4287
查看次数