Wpis z mikrobloga

co zrobić aby metoda getValue była dostępna dla drugiego panelu z guzikami i actionlistionerem?

public class FieldsPanel extends JPanel{
List fieldList = new ArrayList();
public static final int HEIGHT = 100;
public static final int WIDTH = 300;

public String getValue(int i){
return fieldList.get(i).getText();
}

public FieldsPanel(int x) {

setLayout(new GridLayout(x,x));
setPreferredSize(new Dimension(WIDTH, HEIGHT));
int a=0;

for(int i=0; i
  • 9
@LubiPiwko: dej obie klasy i jak używasz bo nic nie kminię z opisu. Ale tak na szybko to powinieneś sobie chyba przekazywać referencję do tego obiektu(a może to może być singleton, czy nie?)
@LubiPiwko: używasz inner classy? jeśli tak to:
1) final modifier (nie polecam)
2) stwórz metodę wywołującą coś z inner classa (+ i tak potrzebujesz tego co niżej)
3) wyeksponuj zmienną jako pole klasy
@LubiPiwko: nie no wystarczy, że zrobisz w klasie FieldsPanel pole:

private static FieldsPanel instance;

public static FieldsPanel getInstance(){
return instance;
}
public static void init(){
instance = new FieldsPanel ();
}

(możliwe, że kolejność private static jest odwrotna ( ͡° ͜ʖ ͡°) )
@KotoFan:
Jak się odwoływać do List fieldList = new ArrayList(); ?

mam teraz taki kod w ramce
public class ActionFrame extends JFrame {

public ActionFrame(int z) {
super("Test akcji");
int x=z;
FieldsPanel.init();
FieldsPanel.getInstance();
JPanel buttonPanel = new ButtonPanel();
JPanel fieldsPanel =FieldsPanel.getInstance();

add(fieldsPanel, BorderLayout.WEST);
add(buttonPanel, BorderLayout.EAST);
setDefaultCloseOperation(ActionFrame.HIDEONCLOSE);
pack();
setVisible(true);

}
}

taki w panelu z polami
class FieldsPanel extends JPanel{
List fieldList = new ArrayList();
public static final int HEIGHT