Gå til innhold

kjey

Medlemmer
  • Innlegg

    348
  • Ble med

  • Besøkte siden sist

Innlegg skrevet av kjey

  1. Hei. Jeg driver å jobber med en oppgave hvor brukeren kan kommunisere med programmet via konsollvinduet. Jeg har da tatt i bruk Scanner til å lese fra konsollet, men støtter på flere problemer. Det som er problemet er at når jeg kombinerer disse "kallene" på metodene i forskjellige rekkefølger gjør den ikke det jeg vil. Når man kaller inputInt() skal den bare returnere en int, også skal man kunne kalle på de andre metodene helt vilkårlig slik at de også utfører oppgaven deres korrekt. Det må være noe feil i koden min som gjør at den ikke leser av riktig. Er det noen som kan hjelpe meg?

    class Utsyn implements Utsyn_grensesnitt {
    
    /** En peker til Scanner-objektet. */
    private Scanner scan;
    
    /** Feil input til inputInt(). */
    public static final int INPUT_INT_ERROR = -1;
    
    /** Lager utsynet. */
    Utsyn() { scan = new Scanner(System.in); }
    
    /**
     * Leser neste gruppe med tegn og tolker dette som en int.
     * @return Heltallet som er skrevet inn. Hvis et unntak
     *		 oppstår returneres -1 slik at det blir skrevet
     *		 ut en feilmelding til brukeren.
     */
    public int inputInt() {
    	try {
    		return scan.nextInt();
    	} catch(Exception ex) {
    		scan.next(); // Hopper over feil input
    		return INPUT_INT_ERROR;
    	} // Slutt try-catch
    }
    
    /**
     * Leser neste gruppe med tegn og tolker dette som en char.
     * @return Tegnet som er skrevet inn.
     */
    public char inputChar() {
    	return scan.nextLine().charAt(0);
    }
    
    /**
     * Leser neste gruppe med tegn og tolker dette som en String.
     * @return Stringen som er skrevet inn.
     */
    public String inputString() {
    	return scan.nextLine();
    }
    }

  2. Sånn, nå har jeg prøvd ut litt forskjellig og må si jeg likte ideen til LostOblivion. Det jeg har gjort er å definere en layer som et BufferedImage og organiserer dem ved å legge de i en "LayerStack". Hver gang musa blir dratt på skjermen endrer Layer-kordinatene seg og tegneflaten kaller repaint() som henter layerne i riktig rekkefølge og maler dem på skjermen.

     

    Men har et lite spørsmål: er litt usikker på hvordan jeg skal ha denne stacken. Altså arrayen til å legge inn Layerne må helt klart ha funksjonen til å utvide seg til minnet sier stopp, men siden dette er snakk om referanser til layere og ikke tallverdier, er jeg litt usikker på hvordan jeg kan flytte f.eks. en referanse midt i arrayen helt forand for så å "dytte" de andre bakover. Med tall er det jo ganske greit, for da lager man bare en temp variabel og flytter verdiene litt fram og tilbake...

     

    Uansett om dere skjønner hva jeg mener eller ikke, er det noen som har et forslag på hvordan en slik LayerStack kan se ut?

  3. Altså poenget er at jeg ikke trenger å fjerne noen components i det hele tatt. Altså alle komponentene er jo gjennomsiktige, så bare legger dem opp på hverandre i riktig rekkefølge, og da hel på toppen denne mussensoren. Skal se om jeg får snekret sammen noe ganske snart så skal jeg legge det ut for inspeksjon :hmm: Kommer ikke til å bli noe avanserte greier i første omgang, bare en demonstrasjon på teorien vi har kommet fram til.

  4. Skal selvfølgelig legge ut resultatet :D Men jeg er enig med deg, altså layerne blir like store som bilderammen, eller brukeren kan bestemme. Tittet på Gimp, og der hadde de ihvertfall brukt den løsningen. Men angående hvordan man flytter rundt på komponentene, jeg tror jeg kanskje har en ide: Hvis jeg legger alle layerne på tegneflaten, men helt på toppen legger en gjennomsiktig layer (som er like stor som tegneflaten) som brukeren ikke har kontroll på, kan jeg da bruke denne til å lytte på musbevegelser. Det denne "musbevegelsesensoren" gjør er at den sjekker hvilken layer som er valgt i menyen og endrer kordinatene til den ettersom hvor du flytter musa. For hver flytting blir repaint() kalt av tegneflaten.

     

    Det som er så fint med denne løsningen er at man hele tiden får de riktige kordinatene i forhold til tegneflaten, fordi mussensoren er like stor som tegneflaten, og kan ikke flyttes slik at tegneflaten og mussensoren alltid vil ligge paralelt over hverandre.

     

    Noen kommentarer til denne tanken?

  5. Ja det var ikke en dum ide! :) Kan prøve å få til på en slik måte, men er bare litt usikker på hvordan jeg vil definere en Layer. Altså hvis jeg opretter en bilderamme på 300x300 px, vil da layeren bare være 300x300 px da? Grunnen til at jeg lurer på det er fordi hvis du flytter layeren halveis ut av bilderammen vil det jo være 50% du ikke kan tegne på fordi componenten er flyttet utenfor og da dekker den ikke hele bilderammen lenger...

     

    Hehe, håper noen skjønte hva jeg mente :whistle:

     

    Uansett, takk for bra innspill!

  6. Hei.

     

    Driver å forsker litt innenfor grafikk i java (litt bildemanipulasjon etc.). Jeg kom til å tenke på å prøve å lage en layer basert bildeeditor. Altså ikke noe veldig fancy, men ihvertfall slik at jeg kan legge på nye layers og flytte rundt på dem etter som hvem av dem jeg har valgt i menyen. Det jeg tenkte var at hver layer er en tegneflate(Component) som da legges på en grunnflate i (0, 0). Hver av disse layerne har en MouseMotionListener som gjør det mulig å flytte rundt på dem. Men så støttet jeg på et lite problem: Når man legger et Component opp på et annet, vil man ikke ha muligheten til å benytte seg av det som ligger under.

     

    Så det jeg lurer på er om noen kan dele litt ideer på hvordan dette problemet kan løses. Vil ikke ha en ferdig løsning (for da er morroa over :dontgetit: ), men noen innlegg :thumbup: Håper noen er intressert i å hjelpe meg!

     

    Si ifra hvis problemstilling ble uklar.

     

    På forhånd takk!

  7. Hei.

     

    Jeg er på leting etter en laser-skriver med farger som har støtte for utskrift på begge sider av et ark. Jeg skal bruke skriveren i sammenheng med utskrift av foiler og dokumenter til skolearbeid, så kvaliteten på utskriften trenger ikke å være eksepsjonelt. Ser helst at skriveren ikke er alt for dyr.

     

    Hadde vært greit om skriveren også har støtte for utskrift fra linux, men dette er ikke HELT nødvendig.

     

    På forhånd takk!

  8. Hei. Har en JFrame som bruker GridBagLayout, men får den ikke helt til å vise seg frem slik jeg vil. Jeg har to tekstfelt som er lagt inn i vær sin JScrollPane. Den nederste skal ha høyde 40 (c.ipady = 40;), men den andre som er øverst vil jeg at skal fylle resten av plassen. Man har jo det som heter fill.VERTICAL, men jeg vil at den skal fylle både horisontalt og vertikalt. Her er i hvertfall koden min:

     

    import javax.swing.*;
    import java.awt.*;
    
    class GUI extends JFrame {
    
       JEditorPane editor = new JEditorPane();
       JScrollPane editorScroll = new JScrollPane(editor);
    
       JTextArea text = new JTextArea();
       JScrollPane textScroll = new JScrollPane(text);
    
       GUI() {
    
    setTitle("GridBag GUI");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setSize(400, 400);
    setLayout(new GridBagLayout());
    
    GridBagConstraints c = new GridBagConstraints();
    c.gridx = 0;
    c.gridy = 0;
    c.weightx = 0.5;
    c.weighty = 0.5;
    c.fill = GridBagConstraints.HORIZONTAL;
    c.anchor = GridBagConstraints.PAGE_START;
    
    add(editorScroll, c);
    
    c.gridy = 1;
    c.anchor = GridBagConstraints.PAGE_END;
    c.ipady = 40;
    
    add(textScroll, c);
    
    setVisible(true);
    
       }
    
    }
    
    public class Run {
    
       public static void main(String[] args) {
    new GUI();
       }
    
    }

     

    Noen som vet hvordan dette gjøres?

  9. Takker, fikk det til. Men det ser litt dumt ut i dokumentasjonen at Main-klassen ikke har noen pakke :hrm: Når jeg sier at den tilhører package coffee får jeg denne feilmeldingen når jeg kjører programmet:

    Exception in thread "main" java.lang.NoClassDefFoundError: Main (wrong name: coffee/Main)
           at java.lang.ClassLoader.defineClass1(Native Method)
           at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
           at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
           at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
           at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
           at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
           at java.security.AccessController.doPrivileged(Native Method)
           at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
           at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
           at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
           at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
           at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)

  10. Hei. Jeg har to spørsmål:

     

    1) Når jeg skal "javadoce" et prosjekt som inneholder flere mapper, hvordan kan jeg da få med dokumentasjon til alle java-filene mine? F.eks. jeg har en mappe som heter "Prosjekt" og der ligger Main.java. Men så er det en mappe til, "Mappe" med masse java filer inni. Hvis jeg skriver i kommandovinduet "cd /Prosjekt" også skriver jeg f.eks. "javadoc -package *.java". Da lager den dokumentasjon til alle klassene som er inne i mappen prosjekt, men hva med det som er inne i "Mappe"? Finnes det en måte som får "javadoc" til å lete videre inn i undermappene?

     

    2) Jeg har satt classpath til "/" (og i den mappen classpathen er satt, ligger mappen "Prosjekt") slik at jeg kan sortere programmet mitt i forskjellige mapper. Øverst i alle java-filene som ligger i undermappen "Mappe" skriver man da "package Prosjekt.Mappe", men når jeg skriver "package Prosjekt" i Main.java får jeg feilmelding om at den ikke finner klassen. Noen som vet hvorfor?

     

    Håper jeg greide å forulere spørsmålene riktig, så takker for alle bidrag!

  11. Hei. Jeg har linux installert på disken min, også installerte jeg windows XP på en annen partisjon. Jeg trodde det skulle gå an å boote opp linux også, men Windows lar meg ikke velge hvilket operativsystem jeg vil kjøre. Har en del viktige filer i Linuxen, og kunne virkelig tenke meg å gjøre slik at det er GRUB som lar meg velge hvilket OS jeg vil kjøre. Noen som vet om en løsning som fungerer?

     

    Det viktigste er at jeg ikke mister de filene som ligger på Linuxen :p Før når jeg har installert XP først har det gått helt fint da, men er vel noe "tricky" man må fikse på?

     

    På forhånd takk!

  12. Jada, går ann det:

    import java.util.*;
    import java.io.*;
    
    public class Talleser
    {
    public static void main(String[] args)
    {
     String filnavn = "tallfil.txt";
     
     try {
     	FileReader forbindelse = new FileReader(filnavn);
     	BufferedReader leser = new BufferedReader(forbindelse);
     	Scanner scan = new Scanner(leser);
     	
     	while(scan.hasNext()) {
       System.out.println(scan.nextDouble());
     	} // Slutt while
     } catch(Exception e) {
     	System.out.println("Søren også!");
     } // Slutt try-catch
    }
    }

    Håper det hjelper :thumbup:

  13. Aha, takk :D Alle de andre fagene har nemlig en egen link til ukesoppgaver.

     

    Men en annen ting jeg lurer på angående IT-utdanning generelt. Jeg aner ikke hva man "burde" spesialisere seg innenfor IT. Er jo programmering jeg er mest glad i, men er da mange forskjellige retninger innenfor programmering også... F.eks. jeg har veldig lyst til å ta faget om operativsystemer hvor du skal i løpet av semesteret ha skrevet en egen kernel, men vet ikke om dette er den lureste veien å gå. Noen som har noe å si om dette?

  14. Har gått på UiO i tre uker nå, og kan ikke si det var alt for vanskelig å finne noen å snakke med :) Synes studentmiljøet virker veldig fint, men forelesningene er kjedelige. Liker spesielt ikke INF1040, blir litt for teoretisk. Har vært litt slækt de første ukene nå, men har tenkt til å ta meg sammen og jobbe mye hardere med matten og Digital Representasjonen (INF 1000 er ikke noe nytt for meg enda...).

     

    Men det er et lite problem. I INF1040 finner jeg ingen ukeoppgaver jeg kan jobbe med. Ligger bare en flervalgstest på internett, men det er det :nei: Hvordan er det egentlig ment å jobbe i dette faget? Lærer ikke akkurat mye bare ved å lese.

  15. Hehe, er ikke det jeg mener. Sorry, forklarte dårlig! Hvordan kan C programmet mitt hente eventuelle argumenter som jeg skriver inn i terminal? F.eks. hvis jeg lager en kommando som heter "dato" med tilhørende C program: "dato". Hvis jeg skriver i terminal: "dato -argument", hvordan kan jeg da sende over argumentet?

×
×
  • Opprett ny...