将填充的数组传递到公共变量上,以便可以在其他类中使用

时间:2013-06-04 21:22:09

标签: java arrays class user-interface

所以我一直致力于完成基本布局的GUI。我有逻辑全部映射出来,但我遇到的问题是弄清楚如何将一个填充数组设置为一个公共变量,其中所有的String和int放在其中保持完整,并没有保持空白。我绝不是编程专家,所以如果答案非常明显,请耐心等待。我将发布我试图将填充数组放入公共变量的窗口。

公共数组'robbieArray'在main中运行soley来输出任何值,但过去我不能在框架中使用它。我想要一个解决方案,以便我可以在框架和我决定制作的其他类中访问它。

import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;
import java.beans.*;



public class PlayerShow extends JFrame
{

public JFrame playerShowFrame;

public final int CLASSSIZE1 = 2;//subject to change

 //PlayerInput player = new PlayerInput();

public PlayerInput [] robbieArray = new PlayerInput [CLASSSIZE1];



public void main(String[] args) throws IOException, FileNotFoundException
{
  //    PlayerInput player = new PlayerInput();
Scanner inputRobbieChamps = new Scanner (new FileReader("robbie_mccarthy_champs.txt"));

for (int x = 0; x<CLASSSIZE1;x++)
{
    String champName = inputRobbieChamps.next();
    String role = inputRobbieChamps.next();
    int tier = inputRobbieChamps.nextInt();

    robbieArray[x] = new PlayerInput (champName, role, tier);
System.out.println("The champ name is " + robbieArray[x].getChampName() +     "with a role of " + robbieArray[x].getRole() + " and a tier value of " + robbieArray[x].getTier());   
}
//  PlayerInput [] robbieArray = new PlayerInput[CLASSSIZE1]; 



/*  for (int x = 0; x<CLASSSIZE1; x++)
    {
        robbieArray [x] = new PlayerInput();
    }

    for (int x = 0; x<CLASSSIZE1; x++)
    {
        robbieArray[x].setChampName(inputRobbieChamps.next());
        robbieArray[x].setRole(inputRobbieChamps.next());
        robbieArray[x].setTier(inputRobbieChamps.nextInt());
    }*/
    inputRobbieChamps.close();


}


public PlayerShow ()
{
    frame();
    playerShowFrame.setVisible(false);
}

public void frame()
{
    playerShowFrame = new JFrame();
    playerShowFrame.setVisible(true);
    //playerShowFrame.setSize(900,600);
    playerShowFrame.setDefaultCloseOperation(EXIT_ON_CLOSE);
    getPlayerShowFrame().setBounds(100, 300, 900, 600);
    playerShowFrame.setLayout(new GridLayout(5,8));

    JLabel titleL = new JLabel ("Robbie McCarthy's data:", SwingConstants.CENTER);

    JLabel blank1L = new JLabel (" ", SwingConstants.CENTER);

    JLabel blank2L = new JLabel (" ", SwingConstants.CENTER);

    JLabel champNameL = new JLabel("Champion Name", SwingConstants.CENTER);

    JLabel roleL = new JLabel ("Role", SwingConstants.CENTER);

    JLabel tierL = new JLabel ("Tier", SwingConstants.CENTER);

    JTextArea hugeTF = new JTextArea ();

    hugeTF.setColumns(6);
    hugeTF.setRows(3);

//      for (int x = 0; x<CLASSSIZE1; x++)
//      {
    System.out.println(robbieArray[0].getRole()); // This is where I am checking to see if i get a filled public array

//      }

    hugeTF.setEditable(false);  

    playerShowFrame = getPlayerShowFrame();

    playerShowFrame.add(titleL);

    playerShowFrame.add(blank1L);

    playerShowFrame.add(blank2L);

    playerShowFrame.add(champNameL);

    playerShowFrame.add(roleL);

    playerShowFrame.add(tierL);

    playerShowFrame.add(hugeTF);

}




public JFrame getPlayerShowFrame() {
    return playerShowFrame;
}

public void setPlayerShowFrame(JFrame playerShowFrame) {
        this.playerShowFrame = playerShowFrame;
}
}

2 个答案:

答案 0 :(得分:2)

将数组作为私有静态..为了封装OOP,创建一个静态getter

private static PlayerInput [] robbieArray = new PlayerInput [CLASSSIZE1];

public static PlayerInput [] getRobbieArray(){
return robbieArray;
}

然后你可以通过PlayerShow.getRobbieArray()

访问它

答案 1 :(得分:1)

一种可能性是将其声明为静态。

public static PlayerInput [] robbieArray = new PlayerInput [CLASSSIZE1];

然后您可以从任何位置PlayerShow.robbieArray访问它。

假设您只想要一个PlayerShowrobbieArray的实例。

否则,您可以将它传递给任何需要在构造函数中作为参数访问它的类,或者通过setter方法。