import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.util.*; public class Option extends JPanel implements ActionListener{ private boolean status; private JButton b; private Performance p; private JComboBox gameBox; private JComboBox raceBox; private Hashtable raceList = new Hashtable(); private Object selected; private String path; public Option(Performance p){ this.p = p; option(); String[] games = {"Starcraft", "Warcraft"}; gameBox = new JComboBox(games); gameBox.addActionListener(this); gameBox.putClientProperty("JComboBox.isTableCellEditor", Boolean.TRUE); add(gameBox, BorderLayout.WEST ); String[] sc = {"Random","Terran","Protoss","Zerg"}; raceList.put(games[0],sc); String[] wc = {"Random","NightElf","Orc","Human","Undead"}; raceList.put(games[1],wc); raceBox = new JComboBox(sc); add(raceBox); JButton k = new JButton("Repaint"); ActionListener repaintListener = new rep(); k.addActionListener(repaintListener); add(k, BorderLayout.SOUTH); // Av någon anledning MÅSTE denna vara med ! ! ! ! ! ! ! ! // System.out.println("p.optionStatus "+p.optionStatus()); } public String getPath(){ if(gameBox.getSelectedItem().equals("Starcraft")){ path = "sc"; // if(raceBox.getSelectedItem().equals("Random")){ // path += randSc(); // } if(getItem().equals((Object)"Terran")){ path += "/bt"; } else if(raceBox.getSelectedItem().equals((Object)"Protoss")){ path += "/bp"; } } System.out.println("EXTRA: "+raceBox.getSelectedItem()); return path; } // HERE IS THE METHOD I´M CALLING public Object getItem(){ System.out.println(this); return raceBox.getSelectedItem(); } public String randSc(){ String ans; double r = Math.random()*2; if(r < 1){ ans = "/bt"; } else ans = "/bp"; return ans; } public void option(){ // Should starts time and select TextField JButton s = new JButton("Start"); add(s); // ActionListener listener = new klick(); // s.addActionListener(this); JButton b = new JButton("Option"); add(b); // b.addActionListener(this); } // private class klick implements ActionListener{ public void actionPerformed(ActionEvent e){ selected = raceList.get(gameBox.getSelectedItem()); if(selected == null){ raceBox.setModel(new DefaultComboBoxModel()); } else{ raceBox.setModel(new DefaultComboBoxModel((String[])selected)); } } public class rep implements ActionListener{ public void actionPerformed(ActionEvent e){ // System.out.println("second: "+raceBox.getSelectedItem()); // System.out.println("Options getItem(): "+getItem()); System.out.println("Option getItem: "+getItem()+"\n"); // System.out.println("SELECTED: "+selected+"\n"); } } } // SECOND CLASS import javax.swing.*; import java.awt.*; import java.awt.event.*; public class stringView extends JPanel{ private Performance perf; private Option option; public stringView(Performance p, Option option){ perf = p; this.option = option; setPreferredSize(new Dimension(100,100)); JButton repainterBut = new JButton("Rep"); ActionListener repListener = new repainter2(); repainterBut.addActionListener(repListener); add(repainterBut, BorderLayout.EAST); } public void paintComponent(Graphics g){ System.out.println("stringView körs ! ! ! !"); super.paintComponent(g); g.setColor(Color.black); // g.drawString("Level: " +perf.getLevel()+" x;",0,10); g.drawString("Score: " +perf.score(),0,25); g.setColor(Color.red); g.drawString("Wrong: " +perf.getWrong(),0,10); g.setColor(Color.black); g.drawString("Next: " +perf.getAss(),0,40); g.drawString("Build: " +perf.getFirstAss(), 0,55); g.drawImage(Toolkit.getDefaultToolkit().getImage ("pic/"+option.getPath()+"/"+perf.getFirstAns()+".jpg"),0,70,this); // System.out.println("stringView Path: pic/"+option.getPath()+"/"+perf.getFirstAns()+".jpg\n"); option.repaint(); // System.out.println("stringView getPath: "+option.getPath()); // System.out.println("stringView EXTRA: "+option.getItem()); } public class repainter2 implements ActionListener{ public void actionPerformed(ActionEvent e){ // System.out.println("stringView getPath: "+option.getPath()); System.out.println("stringView getItem(): "+option.getItem()+"\n"); } } } // The Class who puts it all together **************************************************** // how the hell is the option in line 12 supposed to be the same as the one you add in line 36? import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import javax.accessibility.*; public class LayeredPane extends JPanel{ private Performance perf; private Option option; private TextField field; private View view; private stringView sview; private JLayeredPane layer; // Construcor: takes in all classes public LayeredPane(Performance perf, Option option, TextField field, View view, stringView sview){ this.perf = perf; this.option = option; this.field = field; this.view = view; this.sview = sview; layer = new JLayeredPane(); layer.setPreferredSize(new Dimension(600,500)); // Sets the "settings" to the panels before adding to the JLayeredPane // TextField is hidden behind the other layers TextField panel1 = TextFieldSettings(); layer.add(panel1, new Integer(0)); // View put in the middle layer View panel2 = ViewSettings(); layer.add(panel2, new Integer(1)); // stringView is put on the top stringView panel3 = stringViewSettings(); layer.add(panel3, new Integer(2)); // Option is put on the top Option panel4 = OptionSettings(); layer.add(panel4, new Integer(2)); add(layer); } // The settings for the View layer/JPanel private View ViewSettings() { View v = new View(perf,option); v.setOpaque(true); v.setBorder(BorderFactory.createLineBorder(Color.black)); v.setBounds(0, 0, 600, 500); return v; } // The settings for the Option layer/JPanel private Option OptionSettings(){ Option o = new Option(perf); o.setOpaque(true); o.setBorder(BorderFactory.createLineBorder(Color.black)); o.setBounds(100, 400, 400, 40); return o; } // The settings for the stringView layer/JPanel private stringView stringViewSettings() { stringView s = new stringView(perf, option); s.setOpaque(true); s.setBounds(300, 150, 200, 250); return s; } // The settings for the TextField layer/JPanel private TextField TextFieldSettings() { TextField f = new TextField(view, perf, sview); f.setOpaque(true); f.setBounds(200, 400, 300, 50); f.requestFocus(); return f; } }