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
在单独类中的方法之外使用java对象_Java_Swing_Object - Fatal编程技术网

在单独类中的方法之外使用java对象

在单独类中的方法之外使用java对象,java,swing,object,Java,Swing,Object,这是一个有点混乱的表达,但我会尽我所能。我这里有三个重要的类:Art.java、AddArtGUI.java和GUI.java。java创建了一个具有多个属性的艺术对象,但不使用它做任何事情。java是我们运行的,它创建AddArtGUI,提示用户使用用户提供的属性创建新的艺术对象。AddArtGUI每次运行时都会创建一个新的艺术对象,但我无法对它做任何事情。我需要能够单击“完成”,并让addArtGUI将对象存储在某个位置,以便以后可以通过其他方法(如viewArt方法)访问它。我还需要能够运

这是一个有点混乱的表达,但我会尽我所能。我这里有三个重要的类:Art.java、AddArtGUI.java和GUI.java。java创建了一个具有多个属性的艺术对象,但不使用它做任何事情。java是我们运行的,它创建AddArtGUI,提示用户使用用户提供的属性创建新的艺术对象。AddArtGUI每次运行时都会创建一个新的艺术对象,但我无法对它做任何事情。我需要能够单击“完成”,并让addArtGUI将对象存储在某个位置,以便以后可以通过其他方法(如viewArt方法)访问它。我还需要能够运行AddArtGui,然后创建更多的艺术对象

这是我到目前为止得到的

package jz.art;

import java.util.ArrayList;

public class Art {
    private String name;
    private String artist;
    private ArrayList<String> tags;

    //constructor
    public Art(String artName, String artistName){
        //various attributes
        name = artName;
        artist = artistName;
        tags = new ArrayList<String>();
    }

    //things for use in later methods
    public String getName(){
        return name;
    }

    public String getArtist(){
        return artist;
    }

    public void addKeyword(String p){
        tags.add(p);
    }

    public boolean matches(String v){
        for(int i = 0; i<tags.size(); i++){
            if(tags.get(i)==v){
                return true;
            }
        }
        return false;
    }

}
包装jz.art;
导入java.util.ArrayList;
公共艺术课{
私有字符串名称;
私人弦乐演奏家;
私有ArrayList标签;
//建造师
公共艺术(字符串艺术名称、字符串艺术名称){
//各种属性
名称=艺术名称;
艺术家=艺术家姓名;
tags=newarraylist();
}
//在以后的方法中使用的东西
公共字符串getName(){
返回名称;
}
公共字符串getArtist(){
回归艺术家;
}
公共void addKeyword(字符串p){
添加(p);
}
公共布尔匹配(字符串v){

对于(int i=0;i您可以将艺术对象成员添加到AddArtGUI类中,并设置此成员,而不是在submitButtonActionPerformed方法中使用局部变量。

在AddArtGUI中创建艺术对象的arrayList是完全可以接受的。因此,我在AddArtGUI和allArt.add(a)中添加了公共arrayList allArt;到submit按钮方法,现在它返回一个巨大的nullPointerException,即使我在GUI字段中有东西,它也指向allArt.add(a)语句。有什么想法吗?*没有任何东西是静态的——不确定这是否相关,但我从来都不了解静态,所以我知道这可能是问题所在。在尝试向allArt添加对象之前,您是否确保初始化allArt?在表单初始化中,您需要确保您也这样做:
allArt=new ArrayList()猜对了!真不敢相信我错过了。谢谢!
package jz.art;

import java.util.Arrays;

public class AddArtGUI extends javax.swing.JFrame {

    /**
     * Creates new form AddArtGUI
     */
    public AddArtGUI() {
        initComponents();
        System.out.println("---AddArt Opened---");
    }

    /**
**//initialize form method went here.**                    

    private void submitButtonActionPerformed(java.awt.event.ActionEvent evt) {                                             
        // TODO add your handling code here:
        String attributes = tagsField.getText();
        String[] splitTags = attributes.split(", ");

        Art a = new Art(artNameField.getText(), artistNameField.getText());

        for(int i = 0; i<splitTags.length; i++){
            a.addKeyword(splitTags[i]);
        }

        System.out.println("Sucessfully added a piece with the following attrubtes:");
        System.out.println("Name: "+artNameField.getText());
        System.out.println("Artist: "+artistNameField.getText());
        System.out.println("Tags: "+Arrays.toString(splitTags));
        this.dispose();
        System.out.println("---AddArt Closed---");

    }                                            

**//main method and look/feel setting code were here**

    // Variables declaration - do not modify                     
    private javax.swing.JLabel ArtNameTitel;
    private javax.swing.JLabel ArtistNameTitile;
    private javax.swing.JLabel TagsNameTitle;
    private javax.swing.JLabel Title;
    private javax.swing.JTextField artNameField;
    private javax.swing.JTextField artistNameField;
    private javax.swing.Box.Filler filler1;
    private javax.swing.Box.Filler filler2;
    private javax.swing.JButton submitButton;
    private javax.swing.JTextField tagsField;
    // End of variables declaration                   
}