08. marts 2003 - 08:36Der er
19 kommentarer og 1 løsning
abstract
hejsa TextListener tekst = new TextListener(); txt1.addActionListener(tekst);
når min listner er i konstrutøren giver det ikke fejl men hvis jeg flytter den ned i en metode får jeg dette:
237: java.awt.event.TextListener is abstract; cannot be instantiated TextListener tekst = new TextListener(); hvordan får jeg den peget hen på min listner metode?
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
jo men jeg har en klasse hvor jeg har textlistner del skal bruges i andre klasser er lidt spildt hvis jeg skal skrive det hele hver gang man må da vel kunne hente det fra den anden klasse?
dette har jeg i den ene klasse den skal så hentes i en anden klasse ??? private class TextListener implements ActionListener { public void actionPerformed(ActionEvent e) { if (transType == 0) konto.indsaet(Double.parseDouble(txt1.getText())); if (transType == 0) JOptionPane.showMessageDialog(getFocusOwner(), "Du har her med indsat : " + txt1.getText()); else if (transType == 1) { try { konto.haev(Double.parseDouble(txt1.getText())); JOptionPane.showMessageDialog(getFocusOwner(), "Du har her med Hævet : " + txt1.getText()); } catch (myException m) { lab2.setText(m.getMessage()); } } // else // pack(); } } // class TextListener
1. Pas på med at bruge klassenavne som allerede finde i Java API'et (TextListener).
2. Du får problemer med at genkende variabler hvis du laver en seperat klasse (f.eks. konto, txt1 og lab2).
Du kan gøre sådan noget ala dette (ikke testet): public class Test extends Frame { public Test() { txt1.addActionListener(new MinTextListener{ public void actionPerformed(ActionEvent e) { } }); } }
hee tror vi snakker forbi henanden hvis jeg har dette TextListener tekst = new TextListener(); txt1.addActionListener(tekst); i min konstruktør giver det ikke fejl da jeg har min private class TextListener implements ActionListener i samme klasse men det skal du flyttes i en klasse for sig selv og så kan den ikke finde min metode TextListener
Ok, så prøv at lave et debug eksempel. Altså lav en frame med én knap og forsøg at putte listeneren på denne. Hvis ikke du får det til at virke, så post koden - så er der sikkert et par stykker der kigger på den (mig incl.).
desvære det samme så er det bare ButtonListener den ikke kan finde i klassen Bankdesign som har metoden private class ButtonListener implements ActionListener {
public void actionPerformed(ActionEvent e) { Object source = e.getSource();
if (source == but1) { if (check == 0) {
int result = Konti.getInstance().findKontoNummer(kontonummerTextField.getText()); if( result > -1 ) kontrol();
class KontoOversigt extends JPanel { JButton test; public KontoOversigt() { JLabel label1 = new JLabel("Her kommer din konto oversigt til at stå"); JTextField txt1 = new JTextField("",20);
ButtonListener knap = new ButtonListener(); test = new JButton("Test"); add(test, BorderLayout.SOUTH); test.addActionListener(knap);
// TextListener tekst = new TextListener(); // txt1.addActionListener(tekst);
// add(txt1); // // JLabel lab2 = new JLabel(); // lab2.setVisible(false); // add(lab2); // her
class KontoOversigt extends JPanel { JButton test; public KontoOversigt() { JLabel label1 = new JLabel("Her kommer din konto oversigt til at stå"); JTextField txt1 = new JTextField("",20);
ButtonListener knap = new ButtonListener(); test = new JButton("Test"); add(test, BorderLayout.SOUTH); test.addActionListener(knap);
// TextListener tekst = new TextListener(); // txt1.addActionListener(tekst);
// add(txt1); // // JLabel lab2 = new JLabel(); // lab2.setVisible(false); // add(lab2); // her
setBackground(Color.lightGray); add(label1); } }
class ButtonListener implements ActionListener {
public void actionPerformed(ActionEvent e) { Object source = e.getSource();
if (source == but1) { if (check == 0) {
int result = Konti.getInstance().findKontoNummer(kontonummerTextField.getText()); if( result > -1 ) kontrol();
Det kan sikkert godt lade sig gøre, men jeg tror det er mere besværligt end gavnligt. Forestil dig hvordan din actionPerformed ser ud hvis klassen skal bruges i 10 forskellige klasse.. Den bliver lang og uoverskuelig.
Jeg foretrækker selv den metode som jeg gav et eksempel på 09:31:34
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.