17. december 2003 - 11:50Der er
4 kommentarer og 1 løsning
actionListener - actionPerformed
Dav Kan en eller anden løse denne lille gåde?
Jeg skal have GUIControlleren til at lytte på knapperne i GUI klassen. Jeg kan ikke få handlingen udført hvis lytteren ligger i GUIControlleren men derimod virker den hvis den ligger i HovedvareGUI. Dette giver dog et problem i forhold til mit design.
Det er nok ikke så svært men jeg har stirret mig blind på problemet.
import java.awt.event.*; import java.util.*; /** * Mads (20022663) Jens (20021304) Kalle (20020924) * @author mrydahl * * To change this generated comment edit the template variable "typecomment": * Window>Preferences>Java>Templates. * To enable and disable the creation of type comments go to * Window>Preferences>Java>Code Generation. */ public class GUIController implements ActionListener { private ForsideGUI minForsideGUI; public HovedvareGUI minHovedvareGUI; private OpretNyVareGUI minNyVareGUI; private OpretNyVareGUI minOpretNyVareGUI; //public OpretNyVareGUI minOpretNyVareGUI;
public GUIController() { System.out.println("Indefra GUIControlleren");
//NyVareGUI minNyVareGUI = new NyVareGUI();
//Lager mitLager = new Lager();
//ved instatiering af ForsideGUI sendes this med. //Dette betyder at objektet //GUIController sendes med, hvorved attributter i //GUIController kan kaldes fra ForsideGUI minForsideGUI = new ForsideGUI(this); this.minForsideGUI = minForsideGUI; //ForsideGUI minForsideGUI = new ForsideGUI(this); minForsideGUI.show(); minForsideGUI.setBounds(10, 10, 800, 600);
public double getSamletSaldo(double SamletSaldo){ return SamletSaldo; }
public void getHovedVarerVector() {
} // OpretNyvareKnappen der ligger i hovedvareGUI public void actionPerformed(ActionEvent e){ System.out.println("der blev trykket på noget..."); System.out.println(e.getSource() + "kilden"); System.out.println(e.getActionCommand()); //if (e.getActionCommand().equals("Opret Vare")){
// minOpretNyVareGUI.setVisible(true); // System.out.println("Der blev trykket på Opret Vare"); // minHovedvareGUI.dispose(); //} }
//hovedvaregrupperne er instantieret som intergers og vises //ved tryk public void setSelectedComboBox(int selected) { if (selected == 1) { minHovedvareGUI.setVisible(true); minForsideGUI.dispose(); } if (selected == 2) { minHovedvareGUI.setVisible(true); minForsideGUI.dispose(); } if (selected == 3) { minHovedvareGUI.setVisible(true); minForsideGUI.dispose(); } if (selected == 4) { minHovedvareGUI.setVisible(true); minForsideGUI.dispose(); //minForsideGUI.setComboBox(); } if (selected == 5) { minHovedvareGUI.setVisible(true); minForsideGUI.dispose(); } if (selected == 6) { minHovedvareGUI.setVisible(true); minForsideGUI.dispose(); } }
}
import javax.swing.*; import java.awt.event.*; /* * HovedvareGUI.java * * Created on 12. december 2003, 20:45 */
/** * * @author Mads Rydahl */ public class HovedvareGUI extends javax.swing.JFrame {
private int selected; private GUIController gui; private JButton jButton1;
/** Creates new form HovedvareGUI */ public HovedvareGUI(GUIController g) { initComponents(); gui = g; }
/** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ //public void actionPerformed(ActionEvent e){
//} private void initComponents() { jComboBox1 = new javax.swing.JComboBox(); //jToggleButton1 = new javax.swing.JToggleButton(); jButton1 = new JButton(); jLabel1 = new javax.swing.JLabel(); jTextField1 = new javax.swing.JTextField(); jLabel2 = new javax.swing.JLabel(); jToggleButton2 = new javax.swing.JToggleButton();
Ok... nu har jeg bøvlet med at fremstille noget lignende.. en lytter og en klient i simpelt format, som ligner min "rigtige" kode:
--------------Lytter-----------
public class TestLytter implements ActionListener{ private TestVindue tv; public TestLytter(){ tv = new TestVindue(this); } public void actionPerformed(ActionEvent e){ System.out.println(e); } public static void main(String[] args) { new TestLytter(); } }
---------------------klient--------------
public class TestVindue extends JFrame{ private JButton jb; private TestLytter testLytter; private Container content; public TestVindue(TestLytter t){ testLytter = t; //super(); this.setBounds(500,500,500,500); this.setVisible(true); jb = new JButton("knap"); jb.setBounds(60, 450, 170, 30); jb.addActionListener(testLytter); content = getContentPane(); content.setLayout(null); content.add(jb); content.setVisible(true);
} public static void main(String[] args) { } }
Denne kode virker, og jeg får udskrevet mit event.. Men fundamentalt set er der jo ikke nogen forskel på mit "mini"-eksempel og den rigtige kode...
Prøv lige om det her giver de tilsigtede ændringer
import java.awt.event.*; import java.util.*;
public class GUIController implements ActionListener { private ForsideGUI minForsideGUI; public HovedvareGUI minHovedvareGUI; private OpretNyVareGUI minNyVareGUI; private OpretNyVareGUI minOpretNyVareGUI; //public OpretNyVareGUI minOpretNyVareGUI;
public GUIController() { System.out.println("Indefra GUIControlleren");
//NyVareGUI minNyVareGUI = new NyVareGUI();
//Lager mitLager = new Lager();
//ved instatiering af ForsideGUI sendes this med. //Dette betyder at objektet //GUIController sendes med, hvorved attributter i //GUIController kan kaldes fra ForsideGUI minForsideGUI = new ForsideGUI(this);
public double getSamletSaldo(double SamletSaldo){ return SamletSaldo; }
public void getHovedVarerVector() {
} // OpretNyvareKnappen der ligger i hovedvareGUI public void actionPerformed(ActionEvent e){ if(e.getSource() instanceof ForsideGUI){ System.out.println("ForsideGUI"); // Gøre et eller andet her } else if(e.getSource() instanceof HovedvareGUI){ System.out.println("HovedvareGUI"); // Gøre et eller andet her } else if(e.getSource() instanceof OpretNyVareGUI){ System.out.println("OpretNyVareGUI"); // Gøre et eller andet her } }
//hovedvaregrupperne er instantieret som intergers og vises //ved tryk public void setSelectedComboBox(int selected) { if (selected >= 1 && selected <= 6) { minHovedvareGUI.setVisible(true); minForsideGUI.dispose(); } }
}
import javax.swing.*; import java.awt.event.*;
public class HovedvareGUI extends javax.swing.JFrame {
private int selected; private GUIController gui; private JButton jButton1;
public HovedvareGUI(GUIController g) { initComponents(); gui = g; }
//} private void initComponents() { jComboBox1 = new javax.swing.JComboBox(); //jToggleButton1 = new javax.swing.JToggleButton(); jButton1 = new JButton(); jLabel1 = new javax.swing.JLabel(); jTextField1 = new javax.swing.JTextField(); jLabel2 = new javax.swing.JLabel(); jToggleButton2 = new javax.swing.JToggleButton();
Vi endte op med følgende løsning, efter at ha`prøvet lidt frem og tilbage.
------------------------------------------------------------------- import java.awt.event.*; import java.util.*; /** * Mads (20022663) Jens (20021304) Kalle (20020924) * @author mrydahl * * To change this generated comment edit the template variable "typecomment": * Window>Preferences>Java>Templates. * To enable and disable the creation of type comments go to * Window>Preferences>Java>Code Generation. */ public class GUIController {
//ved instatiering af ForsideGUI sendes this med. //Dette betyder at objektet //GUIController sendes med, hvorved attributter i //GUIController kan kaldes fra ForsideGUI minForsideGUI = new ForsideGUI(this); //this.minForsideGUI = minForsideGUI; //ForsideGUI minForsideGUI = new ForsideGUI(this); minForsideGUI.setBounds(10, 10, 800, 600);
public void sendVare(String[] vare) { int selected = minForsideGUI.getSelected(); minLagerController.addVare(vare, selected); }
// public void gemVare(){ // minLagerController.saveHovedvareVector(HHVector,String Lager); // }
public void getVareList() { }
public double getSamletSaldo(double SamletSaldo){ return SamletSaldo; }
public Vector getHovedVareVector() {
return minLagerController.getHovedVareVector(); }
public void gotoForside() { minForsideGUI.setVisible(true); minHovedvareGUI.setVisible(false); System.out.println("Der blev trykket på Forside"); } public void gotoHovedVare() { minHovedvareGUI.show(); }
public void gotoVareGUI(String vareGruppe, String[] vare) { minVareGUI.show(); minVareGUI.setText(vareGruppe, vare);
}
public void gotoOpretNyVare() { minOpretNyVareGUI.setVisible(true); minHovedvareGUI.setVisible(false); System.out.println("Der blev trykket på Opret Vare"); }
public HovedvareGUI getHovedVare() {
return minHovedvareGUI; }
public ForsideGUI getForsideGUI() {
return minForsideGUI;
}
public VareGUI getVareGUI() { return minVareGUI; }
//hovedvaregrupperne er instantieret som intergers og vises //ved tryk public void setSelectedComboBox(int selected) { if (selected == 1) { minHovedvareGUI.setVisible(true); minForsideGUI.dispose(); } if (selected == 2) { minHovedvareGUI.setVisible(true); minForsideGUI.dispose(); } if (selected == 3) { minHovedvareGUI.setVisible(true); minForsideGUI.dispose(); } if (selected == 4) { minHovedvareGUI.setVisible(true); minForsideGUI.dispose(); } if (selected == 5) { minHovedvareGUI.setVisible(true); minForsideGUI.dispose(); } if (selected == 6) { minHovedvareGUI.setVisible(true); minForsideGUI.dispose(); } }
}
------------------------------------------------------------------- import javax.swing.*; import java.awt.event.*; import java.util.Iterator; import java.util.Vector; /* * HovedvareGUI.java * * Created on 12. december 2003, 20:45 */
/** *
*/ public class HovedvareGUI extends javax.swing.JFrame {
/** Creates new form HovedvareGUI */ public HovedvareGUI(GUIController gui) { initComponents(); this.gui = gui; }
/** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ //public void actionPerformed(ActionEvent e){ // System.out.println(e.getSource() + "fra hovedvareGUI");
//} private void initComponents() { jComboBox1 = new javax.swing.JComboBox(); //jToggleButton1 = new javax.swing.JToggleButton(); jButton1 = new JButton(); jLabel1 = new javax.swing.JLabel(); jTextField1 = new javax.swing.JTextField(); jLabel2 = new javax.swing.JLabel(); jButton2 = new JButton();
if (hovedVare == 1) { navn = ("Systemvarer"); } if (hovedVare == 2) { navn = ("Øko.Varer"); } if (hovedVare == 3) { navn = ("Saft"); } if (hovedVare == 4) { navn = ("Øl"); } if (hovedVare == 5) { navn = ("Alm.Varer"); } if (hovedVare == 6) { navn = ("Emballage"); }
/** Variables declaration - do not modify private javax.swing.JComboBox jComboBox1; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JTextField jTextField1; private javax.swing.JToggleButton jToggleButton1; private javax.swing.JToggleButton jToggleButton2; // End of variables declaration */
/** * Method dispose. * @param i * @param i1 * @param i11 */ public void dispose(int i, int i1, int i11) { }
}
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.