Avatar billede aslan Nybegynder
10. maj 2002 - 14:14 Der er 17 kommentarer og
1 løsning

void paint(Graphics g) virker ikke?

Min void paint(Graphics g) virker ikke ? Der bliver slet ikke skrevet noget på framen?


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.util.*;
import java.text.*;

public class Liste extends JFrame implements ActionListener
{
      JTextArea area;
      JButton værelser,gæster,reservationer,afslut;
      JScrollPane felt;

      Reservation hentReservation = new Reservation();
      OpretGaest hentOpretGaest = new OpretGaest();

      public Liste()throws IOException
      {



      Container contentPane = getContentPane();
      GridBagLayout gridbag = new GridBagLayout();
      GridBagConstraints c = new GridBagConstraints();
      contentPane.setLayout(gridbag);
    // contentPane.setBackground(Color.lightGray);


      c.fill = GridBagConstraints.HORIZONTAL;


      area = new JTextArea(10,20);
      felt = new JScrollPane(area);
      c.weightx = 1.0;
      c.gridwidth = 2;
      c.insets = new Insets(0,20,0,150);
      c.gridx = 0;
      c.gridy = 5;
      gridbag.setConstraints(felt, c);
      contentPane.add(felt);
      area.setEditable(false);
      //area.setBackground(Color.red);

      værelser = new JButton("Værelser");
      c.insets = new Insets(0,490,0,20);
      c.gridx = 1;
      c.gridy = 1;
      gridbag.setConstraints(værelser, c);
      contentPane.add(værelser);
      værelser.addActionListener(this);

      gæster = new JButton("Gæster");
      c.insets = new Insets(10,490,0,20);
      c.gridx = 1;
      c.gridy = 2;
      gridbag.setConstraints(gæster, c);
      contentPane.add(gæster);
      gæster.addActionListener(this);

      reservationer = new JButton("Reservationer");
      c.insets = new Insets(10,490,0,20);
      c.gridx = 1;
      c.gridy = 3;
      gridbag.setConstraints(reservationer, c);
      contentPane.add(reservationer);
      reservationer.addActionListener(this);

      afslut = new JButton("Afslut");
      c.insets = new Insets(10,490,0,20);
      c.gridx = 1;
      c.gridy = 4;
      gridbag.setConstraints(afslut, c);
      contentPane.add(afslut);
      afslut.addActionListener(this);

     
      }
      public void seVærelser()

      {

        for(int i=0;i<50;i++)

        {

            area.append("Nr "+hentReservation.værelser[i].nr+" Kapacitet "+hentReservation.værelser[i].størrelse+" Status "+hentReservation.værelser[i].status+"\n");

        }



      }
      public void seReservationer()

      {

          String tilstand="";



          for(int i=0;i<50;i++)

          {

            if(hentReservation.værelser[i].status.equals("optaget"))

            {


            area.append(""+hentReservation.værelser[i].reservere+"\n");

            tilstand = "Gæst på hotel";

            }

          }

          if(tilstand.equals("")) area.append("Ingen reservationer på Hotel Lazy for øjeblikket \n");

      }

      public void seOprettedeGæster()

      {

          Gæst nyGæst=null;

          for(Enumeration e = hentOpretGaest.gæsteRegistre.keys(); e.hasMoreElements();)

          {

              String s = (String) e.nextElement();

              nyGæst = (Gæst) hentOpretGaest.gæsteRegistre.get(s);

              area.append(""+nyGæst+"\n");

            }
              if(nyGæst == null) area.append("Ingen gæster er oprettet på Hotel Lazy \n");
      }

      public void paint(Graphics g)
      {
          g.setColor(Color.red);
          g.drawString("tester",30,30);
      }

      public void actionPerformed( ActionEvent e )
      {
        if( e.getSource() == værelser )
        {
            area.setText("");
            seVærelser();

        }
        if( e.getSource() == reservationer )
        {
              area.setText("");
              seReservationer();


        }
        if( e.getSource() == gæster )
        {

            area.setText("");
            seOprettedeGæster();

        }
        if( e.getSource() == afslut )
        {

            System.exit(0);
        }


      }



}
Avatar billede lyhr007 Nybegynder
10. maj 2002 - 15:15 #1
I swing skal skal alle ændringer ske via event-dispatching thread.


http://java.sun.com/docs/books/tutorial/uiswing/mini/threads.html
Avatar billede aslan Nybegynder
10. maj 2002 - 15:17 #2
Ehm jeg er ikke med?
Avatar billede lyhr007 Nybegynder
10. maj 2002 - 15:22 #3
Læs det link jeg skrev ovenfor:

Hvis du ændre i din GUI skal det ske via den tråd der hedder event-dispatching thread.

Det er rimeligt meget at begynde at forklare her, så du skal nok have en bredere forståelse for SWING før du kan komme videre.

Læs og lav SWING tutorial'en.
Avatar billede aslan Nybegynder
10. maj 2002 - 16:01 #4
Hva så nu?
Avatar billede lyhr007 Nybegynder
10. maj 2002 - 16:07 #5
Hvad stod der man skulle gøre hvis man ændre på SWING componenterne efter man har realiseret dem?
Avatar billede aslan Nybegynder
10. maj 2002 - 16:10 #6
Once a Swing component has been realized, all code that might affect or depend on the state of that component should be executed in the event-dispatching thread.
Avatar billede lyhr007 Nybegynder
10. maj 2002 - 16:11 #7
Ja og hvordan ændre man noget via event-dispatching thread?
Avatar billede aslan Nybegynder
10. maj 2002 - 16:16 #8
Det ved jeg ikke jeg havde håbet du ville hjælpe mig med det:)
Avatar billede lyhr007 Nybegynder
10. maj 2002 - 16:19 #9
The SwingUtilities class provides two methods to help you run code in the event-dispatching thread:
invokeLater
Requests that some code be executed in the event-dispatching thread. This method returns immediately, without waiting for the code to execute.
invokeAndWait
Acts like invokeLater, except that this method waits for the code to execute. As a rule, you should use invokeLater rather than this method.

Det betyder at man skal få SwingUtilities til at gøre det.

Jeg syntes at 15 point er lidt for lidt og jeg er ikke for skrap til SWING i forvejen.

Så jeg håber at du selv læser dig til det eller opretter et nyt spg, hvor du vil have hjælp til at bruge ovenfor stående klasse i din kode.
Avatar billede aslan Nybegynder
10. maj 2002 - 17:02 #10
Jeg kan ikke lige se at det skal være så svært som du gør det til..... Jeg vil jo bare have noget tekst på framen???
Avatar billede lyhr007 Nybegynder
10. maj 2002 - 17:09 #11
Det er ikke svært at bruge noget man ved hvordan virker.

Du blander en masse sammen og prøver dig frem uden at have læst hvordan det du bruger virker. Så for man sjove resultater.

Hvis jeg var dig vil jeg få et simpelt skykke GUI til at virke først. F.esk. lave en frame med en knap. Når du kan det så sætte en textlabel ind, og når du kan det så få den til at opdatere textlabel via knappen og en event (events sker via event-dispatching thread).

I SWING kan man bruge pack() for at få den yderste container til at bede alle dens elementer om at tegne sig selv.
Avatar billede aslan Nybegynder
10. maj 2002 - 18:49 #12
Jamen tak for undervurderingen jeg sidder her er næsten færdig med rapporten jeg skal aflevere på mandag og nu får jeg at vide at jeg skal starte forfra. Flot...

Måske skulle du lade vær med at svare på spørgsmål næste gang hvis du ikke har et svar! Hva siger du til det?
Avatar billede =maddog= Nybegynder
10. maj 2002 - 19:25 #13
aslan> har du adgang til Lewis & Loftus - JAVA software solutions? Det er en bog. Den er rimelig god til at forklare hvordan Layouts laves i Swing.
Avatar billede llcoolj Nybegynder
10. maj 2002 - 20:10 #14
Er ikke sikker- men prøv at skrive show(); sidst i constructoren.
Avatar billede llcoolj Nybegynder
10. maj 2002 - 20:23 #15
show virker - har lige forsøgt men du skal huske at sætte en størrelse på framen! Skriv lige hvis jeg kan hjælpe med mere....
Avatar billede aslan Nybegynder
11. maj 2002 - 11:46 #16
Når jeg forsøger med  contentPane.show(); i contructoren får jeg:

Note: C:\Documents and Settings\aslan\Skrivebord\grænseflade2\Liste.java uses or overrides a deprecated API.
Note: Recompile with -deprecation for details.

Tool completed successfully


Hvis jeg så kun forsøger med show(); i constructoren får jeg en hel ny frame frem hvor kun teksten står og alle komponenter er væk?
Avatar billede =maddog= Nybegynder
11. maj 2002 - 14:19 #17
deprecated betyder at funktionen er fjernet i nyere implementeringer. skal du bruge swing? ellers læs de tre notesæt på denne side om GUI'er og layout
http://www.matfys.kvl.dk/programmering/plan.html
Avatar billede aslan Nybegynder
26. maj 2002 - 11:06 #18
nå men..
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