Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
循环中的多个JLabel,java_Java_Swing_For Loop_Nullpointerexception_Jlabel - Fatal编程技术网

循环中的多个JLabel,java

循环中的多个JLabel,java,java,swing,for-loop,nullpointerexception,jlabel,Java,Swing,For Loop,Nullpointerexception,Jlabel,我试图在一个循环中创建jlabel,但似乎有些地方出了问题。循环中没有出现任何标签。我缺少什么?我是否必须设置另一个面板,或者我可以使用与现有面板相同的面板 public class searchFrame extends JFrame { JLabel bsearch= new JLabel ("Search by name: "); JTextField txsearch = new JTextField(25); JButton bgo = new JButton("Go"); JLa

我试图在一个循环中创建jlabel,但似乎有些地方出了问题。循环中没有出现任何标签。我缺少什么?我是否必须设置另一个面板,或者我可以使用与现有面板相同的面板

 public class searchFrame extends JFrame {

JLabel bsearch= new JLabel ("Search by name: ");
JTextField txsearch = new JTextField(25);
JButton bgo = new JButton("Go");
JLabel allsearch= new JLabel ("All files");
JLabel result=new JLabel ();
JPanel panel = new JPanel();

searchFrame(){
super("Search frame");
setSize(260,400);
setLocation(500,280);
panel.setLayout (null); 

bsearch.setBounds(10,40,100,20);
txsearch.setBounds(120,40,70,20);
bgo.setBounds(195,40,55,20);
allsearch.setBounds(10,70,80,20);
result.setBounds(10,100,80,20);

panel.add(bsearch);
panel.add(txsearch);
panel.add(bgo);
panel.add(allsearch);
panel.add(result);

getContentPane().add(panel);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
actionsearch();
mouseactionlabel();
}

public void actionsearch(){
bgo.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
    String path1="C:/Documents and Settings/giannis/Desktop/Server/";
    String fileName = "";
            try{
            fileName = txsearch.getText();
            File directory = new File(path1);
                        File[] listOfFiles = directory.listFiles();
                        int c=0;
                        for (File file : listOfFiles ) {
                                String name = file.getName();

                                    if (name.equals(fileName)) {
                                    result.setText(fileName);
                                    long size=file.length();
                                    long modified=file.lastModified();                                  
                                     c=1;
                                        System.out.println("File found..");
                                        System.out.println("File size"+size);
                                        System.out.println("File modified"+modified);
                                    }

                                    }if (c!=1){
                                        System.out.println("File not found..");
                                        result.setText("Not found");
                                    }}
        catch(Exception e){
            e.printStackTrace();
        }                              

}
});
}

void mouseactionlabel(){
allsearch.addMouseListener(new MouseListener() {
public void mouseClicked(MouseEvent arg0) {
    String path1="C:/Documents and Settings/giannis/Desktop/Server/";

            try{

                File directory = new File(path1);
                File[] listOfFiles = directory.listFiles();
                int c1 = directory.listFiles().length;
                System.out.println(c1);
                JLabel[] labels = new JLabel[c1];

                for (File file : listOfFiles ) {

                for (int i = 0 ;i < c1; i++)
                {     
                    for(int v = 120; v <= 300; v += 20){
                        String name = file.getName();
                        labels[i] = new JLabel();
                        labels[i].setBounds(10,v,80,20);
                        labels[i].setText(name);                        
                        panel.add(labels[i]);


                }}
                                    }

                                    }
        catch(Exception e){
            e.printStackTrace();
        }
}
public void mouseEntered(MouseEvent arg0) {
}
public void mouseExited(MouseEvent arg0) {
}
public void mousePressed(MouseEvent arg0) {
}
public void mouseReleased(MouseEvent arg0) {
}
});
}
}
public类searchFrame扩展了JFrame{
JLabel bsearch=新的JLabel(“按名称搜索”);
JTextField txsearch=新的JTextField(25);
JButton bgo=新JButton(“Go”);
JLabel allsearch=新JLabel(“所有文件”);
JLabel结果=新的JLabel();
JPanel面板=新的JPanel();
searchFrame(){
超级(“搜索框”);
设置大小(260400);
设置位置(500280);
panel.setLayout(空);
b研究挫折(10,40100,20);
txsearch.setBounds(120,40,70,20);
bgo.setBounds(195,40,55,20);
allsearch.setBounds(10,70,80,20);
结果:挫折数(10100,80,20);
面板。添加(b搜索);
panel.add(txsearch);
面板。添加(bgo);
panel.add(allsearch);
添加(结果);
getContentPane().add(面板);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(真);
actionsearch();
mouseactionlabel();
}
public void actionsearch(){
bgo.addActionListener(新ActionListener(){
已执行的公共无效行动(行动事件ae){
String path1=“C:/Documents and Settings/giannis/Desktop/Server/”;
字符串fileName=“”;
试一试{
fileName=txsearch.getText();
文件目录=新文件(路径1);
文件[]listOfFiles=directory.listFiles();
int c=0;
对于(文件:listOfFiles){
字符串名称=file.getName();
if(name.equals(fileName)){
result.setText(文件名);
long size=file.length();
long modified=file.lastModified();
c=1;
System.out.println(“找到文件…”);
System.out.println(“文件大小”+大小);
System.out.println(“文件修改”+修改);
}
}如果(c!=1){
System.out.println(“未找到文件…”);
result.setText(“未找到”);
}}
捕获(例外e){
e、 printStackTrace();
}                              
}
});
}
void mouseactionlabel(){
allsearch.addMouseListener(新的MouseListener(){
公共无效鼠标单击(鼠标事件arg0){
String path1=“C:/Documents and Settings/giannis/Desktop/Server/”;
试一试{
文件目录=新文件(路径1);
文件[]listOfFiles=directory.listFiles();
int c1=directory.listFiles().length;
系统输出打印LN(c1);
JLabel[]标签=新的JLabel[c1];
对于(文件:listOfFiles){
对于(int i=0;i对于(int v=120;v您将获得
NullPointerException
,因为您在调用setBounds方法之前尚未初始化
JLabel
。因此, 更改此项:

String name = file.getName();
labels[i].setBounds(10,v,80,20);
致:

要消除
ArrayIndexOutOfBoundException
change:

for (int i = 1 ;i <= c1; i++)

for(int i=1;i您将获得
NullPointerException
,因为您在调用setBounds方法之前尚未初始化
JLabel
。因此, 更改此项:

String name = file.getName();
labels[i].setBounds(10,v,80,20);
致:

要消除
ArrayIndexOutOfBoundException
change:

for (int i = 1 ;i <= c1; i++)

for(int i=1;i)您尚未初始化数组中的元素,因此它们都是
null
,这是一个例外。这是初学者首次开始使用对象数组时常见的错误。1)对代码块使用一致的逻辑缩进。代码缩进旨在帮助人们理解程序流程。2)Java GUI可能必须在多个平台上工作,使用不同的屏幕分辨率和不同的PLAF。因此,它们不利于组件的精确放置。要组织组件以获得健壮的GUI,请使用布局管理器,或者与布局填充和边框一起使用。您尚未初始化数组中的元素,因此它们都是
null
,这是一个例外。这是我在初学者第一次开始使用对象数组时看到的一个常见错误。1)对代码块使用一致的逻辑缩进。代码缩进旨在帮助人们理解程序流。2)Java GUI可能必须在多个平台上工作,在不同的屏幕分辨率和使用不同的PLAF。因此,它们不利于组件的精确放置。要组织组件以获得健壮的GUI,请使用布局管理器,或者使用布局填充和边框。正如您所说,我已经对其进行了更改,但现在我收到了java、 lang.ArrayIndexOutOfBoundsException:。为什么?c1=2之所以出现此异常,是因为您试图访问数组中不存在的索引处的元素。任何数组都以索引
0
开始,以索引
lengh-1
结束。请查看我的更新。您是对的!是因为有挫折,我才没有获得la我的gui中的BEL?然后删除设置框,如果已经这样做,则不要将面板布局更改为
null
。!!不要将布局设置为null。从代码中删除以下行:
panel.setLaout(null)
。如果您没有设置布局
null
,然后没有设置边界,则每个循环中都会出现“是”标签。我已经按照您所说的进行了更改,但现在我收到了java.lang.ArrayIndexOutOfBoundsException:.为什么?c1=2您会出现此异常,因为您正在尝试访问arr中不存在的该索引处的元素任何数组都以索引
0
开始,以索引结束