永发信息网

用JAVA组件编制文件浏览器的问题

答案:1  悬赏:80  手机版
解决时间 2021-05-18 14:44
  • 提问者网友:你挡着我发光了
  • 2021-05-18 06:19

下面是我用JAVA编制的文件浏览器,好像组件的事件处理错了。

我是自学的,没地方问的。。

这里的哪位大侠帮我改一下。。。

谢谢了。。。

import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class zuo17_3 extends Frame implements ActionListener{
Label l1=new Label("路径");
TextField tf=new TextField();
ScrollPane sp=new ScrollPane(0);
Panel p1=new Panel();
Panel p2=new Panel();
Label[] l2=new Label[1000];

public zuo17_3 (String title){
super(title);
tf.setSize(150,10);
l1.setSize(30,10);
p1.add(l1);
p1.add(tf);
sp.setBounds(10,30,180,160);
p2.add(sp);
add(p1,"North");
add(p2,"Center");
tf.addActionListener(this);
}
public void actionPerformed(ActionEvent e){
if(e.getSource() instanceof TextField){
TextField temp=(TextField)e.getSource();
File f=new File(temp.getText());
File[] fs=f.listFiles();
for(int i=0;i<fs.length;i++){
p2.add(l2[i]);
if(fs[i].isDirectory())
l2[i].setText("目录:"+fs[i]);
else
l2[i].setText("文件:"+fs[i]);
}
}
}
public static void main(String []args){
zuo17_3 me=new zuo17_3("文件浏览器");
me.setSize(200,200);
me.setVisible(true);
}
}

最佳答案
  • 五星知识达人网友:白昼之月
  • 2021-05-18 06:34

l2[i] = new Label();
sp.add(l2[i]);


数组初始化并不是元素初始化,所以你要为每一个l2进行初始化。


这样显示还是有问题,我把它加上一个textarea后,验证,是没问题的。


代码如下:


package test;


import java.awt.*;
import java.awt.event.*;
import java.io.*;


public class MyFileBrowser extends Frame implements ActionListener {

private static final long serialVersionUID = -6502544295601968846L;
Label l1 = new Label("路径");
TextField tf = new TextField(10);
ScrollPane sp = new ScrollPane(0);
TextArea ta = new TextArea();
Panel p1 = new Panel();
Panel p2 = new Panel();
Panel p3 = new Panel();
Label[] l2 = new Label[1000];


public MyFileBrowser(String title) {
super(title);
tf.setSize(150, 10);
l1.setSize(30, 10);
p1.add(l1);
p1.add(tf);
sp.setBounds(10, 30, 180, 160);
p2.add(sp);
p3.add(ta);
add(p1, "North");
add(p2, "Center");
add(p3, "South");
tf.addActionListener(this);
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}


public void actionPerformed(ActionEvent e) {
if (e.getSource() instanceof TextField) {
TextField temp = (TextField) e.getSource();
File f = new File(temp.getText());
File[] fs = f.listFiles();
for (int i = 0; i < fs.length; i++) {
l2[i] = new Label();
sp.add(l2[i]);
if (fs[i].isDirectory()) {
l2[i].setText("目录:" + fs[i]);
ta.setText(ta.getText()+"\n目录:" + fs[i]);
}
else {
l2[i].setText("文件:" + fs[i]);
ta.setText(ta.getText()+"\n文件:" + fs[i]);
}
}
}
}


public static void main(String[] args) {
MyFileBrowser me = new MyFileBrowser("文件浏览器");
me.setSize(500, 500);
me.setVisible(true);
}
}

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯