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