Avatar billede askhoej Praktikant
12. december 2001 - 22:50 Der er 12 kommentarer og
1 løsning

ActionListener problem

Hvordan for jeg nedenstående kode til at reagere på actionerListeneren? (ButtonLogin)

**********************
package myprojects.Login;

import java.awt.*;
import java.awt.event.*;
import java.awt.Component;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;


class Login extends Frame implements ActionListener {
    //Global
    public static String strError;
    public static String strUsername;
    public static String strPassword;
       
    //GUI components
    //Labels
    public static JLabel LabelUsername = new JLabel(\"Brugernavn\",0);
    public static JLabel LabelPassword = new JLabel(\"Kodeord      \",0);
    public static JLabel LabelError = new JLabel(\"  \");
    //TextField
    public static JTextField TextFieldUsername = new JTextField();
    //PasswordField
    public static JPasswordField TextFieldPassword = new JPasswordField();
    //Buttons
    public static JButton ButtonLogin = new JButton(\"Login\");
    //Panel
    public static JPanel PanelHidden1 = new JPanel();
    public static JPanel PanelHidden2 = new JPanel();
    public static JPanel PanelContent = new JPanel();
    //TextArea
    public static JTextArea TextAreaDebug = new JTextArea(\"\",8,16);
    //Border
    public static Border border = BorderFactory.createBevelBorder(BevelBorder.RAISED,
                                                    new Color(178,178,178),
                                                    new Color(178,178,178),
                                                    new Color(178,178,178),
                                                    new Color(124,124,124));
   
    public static void main(String args[]) {
        //TextArea
        JTextArea TextAreaDebug = new JTextArea(\"Debug information...\",8,16);
       
        System.out.println(\"Starting Login...\");
        Login mainFrame = new Login();
        mainFrame.setSize(300, 400);
        mainFrame.setTitle(\"Login\");
        mainFrame.setBackground(new java.awt.Color(65,146,205));
       
        //Panel color
        PanelHidden1.setBackground(new java.awt.Color(65,146,205));
        PanelHidden2.setBackground(new java.awt.Color(65,146,205));
       
        //GridBagLayout
        GridBagLayout layout = new GridBagLayout();
        mainFrame.setLayout(layout);
        //GridBagConstraints
        GridBagConstraints con = new GridBagConstraints();
        //GridBagConstraints Insets
        Insets ins = new Insets(5,5,5,5);
        //TextAreaDebug settings
        TextAreaDebug.setLineWrap(true);
        TextAreaDebug.setEditable(false);
        TextAreaDebug.setBorder(border);
       
        //LabelUsername
        con = createGBC(0,0,1,1);
        con.fill = GridBagConstraints.NONE;
        con.insets = ins;
        con.weightx = 2;
        con.weighty = 1;
        layout.setConstraints(LabelUsername,con);
        mainFrame.add(LabelUsername);
       
        //LabelPassword
        con = createGBC(0,1,1,1);
        con.fill = GridBagConstraints.NONE;
        con.insets = ins;
        con.weightx = 2;
        con.weighty = 1;
        layout.setConstraints(LabelPassword,con);
        mainFrame.add(LabelPassword);
       
        //TextFieldUsername
        con = createGBC(1,0,2,1);
        con.fill = GridBagConstraints.HORIZONTAL;
        con.insets = ins;
        con.weightx = 12;
        con.weighty = 1;
        layout.setConstraints(TextFieldUsername,con);
        mainFrame.add(TextFieldUsername);
       
        //TextFieldPassword
        con = createGBC(1,1,2,1);
        con.fill = GridBagConstraints.HORIZONTAL;
        con.insets = ins;
        con.weightx = 12;
        con.weighty = 1;
        layout.setConstraints(TextFieldPassword,con);
        mainFrame.add(TextFieldPassword);
       
        //ButtonLogin
        con = createGBC(2,2,1,1);
        con.fill = GridBagConstraints.NONE;
        con.insets = ins;
        con.weightx = 2;
        con.weighty = 1;
        layout.setConstraints(ButtonLogin,con);
        mainFrame.add(ButtonLogin);
       
        //LabelError
        con = createGBC(0,3,3,1);
        con.fill = GridBagConstraints.HORIZONTAL;
        con.insets = ins;
        con.weightx = 15;
        con.weighty = 1;
        layout.setConstraints(LabelError,con);
        mainFrame.add(LabelError);
       
        //PanelHidden1
        con = createGBC(0,2,1,1);
        con.fill = GridBagConstraints.HORIZONTAL;
        con.insets = ins;
        con.weightx = 2;
        con.weighty = 1;
        layout.setConstraints(PanelHidden1,con);
        mainFrame.add(PanelHidden1);
       
        //PanelHidden2
        con = createGBC(1,2,1,1);
        con.fill = GridBagConstraints.HORIZONTAL;
        con.insets = ins;
        con.weightx = 15;
        con.weighty = 1;
        layout.setConstraints(PanelHidden2,con);
        mainFrame.add(PanelHidden2);
       
        //TextAreaDebug
        con = createGBC(0,4,3,2);
        con.fill = GridBagConstraints.BOTH;
        con.insets = ins;
        con.weightx = 15;
        con.weighty = 10;
        layout.setConstraints(TextAreaDebug,con);
        mainFrame.add(TextAreaDebug);
       
        //Visible
        mainFrame.setVisible(true);
                           
       
    }

    public Login() {
       
        //ActionListener
        ButtonLogin.addActionListener(this);
       
        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                dispose();
                System.exit(0);
            }
        });
       
       
    }
   
    public void actionPerformed(ActionEvent event){
        Object button = event.getSource();   
   
        if(button.equals(ButtonLogin)){
        strUsername = TextFieldUsername.getText();
        strPassword = TextFieldPassword.getText();
        TextAreaDebug.setText(\"\");
        TextAreaDebug.append(\"Brugernavn: \" + strUsername + \"\\n\");
        TextAreaDebug.append(\"Password: \" + strPassword);
       
        }
       
    }
   
    public static GridBagConstraints createGBC( int x, int y, int width, int height )
    {
        GridBagConstraints gbc = new GridBagConstraints();
   
        gbc.gridx = x;   
        gbc.gridy = y;   
   
        gbc.gridwidth = width;   
        gbc.gridheight = height;
   
        return gbc;
    }
}

Avatar billede erikjacobsen Ekspert
12. december 2001 - 23:01 #1
Måske
if(button==ButtonLogin){
Avatar billede greybeard Nybegynder
12. december 2001 - 23:04 #2
Den reagerer i alt fald på knappen.
Der er kald til ActionPerformed
Avatar billede askhoej Praktikant
12. december 2001 - 23:05 #3
nej jeg equals er god nok, jeg tror bare ikke actionPerformed bliver kaldt og aner ikke hvorfor?
Avatar billede erikjacobsen Ekspert
12. december 2001 - 23:09 #4
Ok, da - men == er lidt hurtigere. Du erklærer dit textfelt igen i main. Den skal starte

public static void main(String args[]) {
      //TextArea
    TextAreaDebug = new JTextArea(\"Debug information...\",8,16);
                           
Avatar billede greybeard Nybegynder
12. december 2001 - 23:13 #5
ActionPerformed bliver kaldt.
Den kommer ind i if-sætningen.
Navn og password bliver læst korrekt.
Problemet ligger i at sætte teksten ind i textarea;
Avatar billede askhoej Praktikant
12. december 2001 - 23:14 #6
Takker - det var lige der fejlen lå, svarer du lige så du kan få nogen point
Avatar billede erikjacobsen Ekspert
12. december 2001 - 23:15 #7
Nej nej, stil os nogle opgaver, der kræver lidt tankevirksomhed, så
kan det være du slipper af med point
Avatar billede greybeard Nybegynder
12. december 2001 - 23:20 #8
Det var kun et halvt svar
Avatar billede askhoej Praktikant
12. december 2001 - 23:31 #9
okay :-) - så har jeg et andet problem i måske kan hjælpe mig med.

Jeg har hentet klassen jpcap fra nedenstående hjemmeside og få installeret den.

http://www.goto.info.waseda.ac.jp/~fujii/jpcap/doc_en/jpcap/EthernetPacket.html

Men hvordan kan jeg få kaldt metoden getSourceAddress() og få den til returnere til en streng?

jeg har forsøgt mig med nedenstående, hvilket virker - men jeg for en fejl når jeg forsøger at kalde getSourceAddress():

import jpcap.*;

class Test
{
   
  public static void main(String[] args) throws java.io.IOException{
    Jpcap jpcap=null;
   
    String[] devices=Jpcap.getDeviceList();
    for(int i=0;i<devices.length;i++)
    System.out.println(devices[i]);
       
  }
}

Avatar billede erikjacobsen Ekspert
12. december 2001 - 23:38 #10
Øh - jeg kan slet ikke se at Jpcap har en getDeviceList metode - eller
er deres JavaDoc ude af trit med deres kode?
Avatar billede askhoej Praktikant
12. december 2001 - 23:41 #11
Det ser vist ud til at den er lidt ude af trit - jeg har forsøgt med metoden lookupDevice() - og denne fejler ikke, men det sq getSourceAddress som er den vigtige for mig og den kan jeg ikke få kaldt :-(
Avatar billede askhoej Praktikant
13. december 2001 - 16:51 #12
Jeg har fundet en nyere version af Jpcap og dens dokumentation:

http://jpcap.sourceforge.net/javadoc/index.html

Jeg forsøger nedenstående men for en nullpointerexecption, nogen der kan hjælpe?

**********************************

import net.sourceforge.jpcap.net.EthernetPacket;

class Tcpdump
{
  public static void

  public static void main(String[] args) throws java.io.IOException{

    String mac = null;
    EthernetPacket ether = null;
 
    mac = ether.getSourceHwAddress();
    System.out.println(mac);
}
}
Avatar billede erikjacobsen Ekspert
13. december 2001 - 20:50 #13
du skal vel lige have oprettet et objekt (har dog ikke læst dit link)

EthernetPacket ether = new EthernetPacket();
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester