Jeg er igang med at læse Java 2 Grundbog, og er kommet til kapitlet om brugerinput.
den første Listener de beskriver er actionListener, og det er den jeg har problemer med, eller måske har det ivirkeligheden slet ikke noget med input at gøre, men handler bare om hvordan klasser snakker med hindanden...??
I de programmer de laver i bogen bruger de kun en klasse til både main funktionen, oprette vinduer, event listener osv. Jeg tror det er for at spare plads. Jeg har så valgt at lave flere forskellige klasser fordi jeg tror det er mere "rigtigt"
jeg er som sagt kommet til at lære om actionListener, her er mine filer:
layout.java:
- public class layout {
-
- public static void main(String[] args) {
-
- vindue v = new vindue();
- v.setVisible(true);
- }
- }
vindue.java
- import javax.swing.*;
- import java.awt.*;
-
- public class vindue extends JFrame {
-
- public vindue() {
-
- setTitle("Brugernavn Og Password");
- setSize(290, 110);
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
-
- GridBagLayout gridbag = new GridBagLayout();
- GridBagConstraints con = new GridBagConstraints();
-
- JPanel panel = new JPanel();
- panel.setLayout(gridbag);
-
- lytter lyt = new lytter();
-
- // Navne Etiket
- bygEgenskaber(
- con,
- 0, 0, 1, 1, 10, 40,
- GridBagConstraints.EAST,
- GridBagConstraints.NONE);
-
- JLabel etiket1 = new JLabel("Navn:");
- gridbag.setConstraints(etiket1, con);
- panel.add(etiket1);
-
- // Navne Tekstfelt
- bygEgenskaber(
- con,
- 1, 0, 1, 1, 90, 0,
- GridBagConstraints.HORIZONTAL);
-
- JTextField tekstFelt1 = new JTextField();
- gridbag.setConstraints(tekstFelt1, con);
- panel.add(tekstFelt1);
-
- //Password Etiket
- bygEgenskaber(con,
- 0, 1, 1, 1, 0, 40,
- GridBagConstraints.EAST,
- GridBagConstraints.NONE);
-
- JLabel etiket2 = new JLabel("Password:");
- gridbag.setConstraints(etiket2, con);
- panel.add(etiket2);
-
- //Password TekstFelt
- bygEgenskaber(
- con,
- 1, 1, 1, 1, 0, 0,
- GridBagConstraints.HORIZONTAL);
-
- JPasswordField PasswordFelt1 = new JPasswordField();
- PasswordFelt1.setEchoChar('*');
- gridbag.setConstraints(PasswordFelt1, con);
- panel.add(PasswordFelt1);
-
- //OK knap
- bygEgenskaber(
- con,
- 0, 2, 2, 1, 0, 20,
- GridBagConstraints.CENTER,
- GridBagConstraints.NONE);
-
- JButton knap1 = new JButton("OK");
- gridbag.setConstraints(knap1, con);
- knap1.addActionListener(lyt);
- panel.add(knap1);
-
- setContentPane(panel);
- }
-
- void bygEgenskaber(GridBagConstraints gbc, int gx, int gy, int gw, int gh, int wx, int wy, int a, int f) {
-
- gbc.gridx = gx;
- gbc.gridy = gy;
- gbc.gridwidth = gw;
- gbc.gridheight = gh;
- gbc.weightx = wx;
- gbc.weighty = wy;
-
- gbc.anchor = a;
- gbc.fill = f;
- }
-
- void bygEgenskaber(GridBagConstraints gbc, int gx, int gy, int gw, int gh, int wx, int wy, int f) {
-
- gbc.gridx = gx;
- gbc.gridy = gy;
- gbc.gridwidth = gw;
- gbc.gridheight = gh;
- gbc.weightx = wx;
- gbc.weighty = wy;
-
- gbc.fill = f;
- }
-
-
- }
lytter.java
- import java.awt.event.*;
-
- public class lytter implements ActionListener {
-
- public void actionPerformed(ActionEvent evt) {
-
- v.setTitle("Du har trykket ok");
- }
- }
måske var al den kode ikke nødvendig, men nu fik i den for en sikkerheds skyld
håber ikke den forvire.
Problemet ligger i lytter.java i linien v.setTitle("Du har trykket ok")
den kan ikke finde v objektet.
Det kan godt være at jeg har sat klasserne op på en helt fucked måde... håber i kan hjælpe
Indlæg senest redigeret d. 06.06.2008 11:29 af Bruger #13669