JFrame Skrevet 20. mars 2007 Del Skrevet 20. mars 2007 Jeg har prøvd å få disse filene over til en. Noe læreren laget i forrige time, men jeg syns det er enklere å få oversikt når alt er i en fil. Har vel stort sett bare kopiert over. Hvorfor virker det ikke når jeg har sutte alt i en fil? Her er de 5 filene: public class Program { /** * @param args */ public static void main(String[] args) { Control c=new Control(); } } import java.awt.BorderLayout; import java.awt.event.ActionListener; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JTextArea; public class View extends JFrame { private JTextArea jta=new JTextArea(); JMenuItem jmi_Endre=new JMenuItem("Endre"); //Constructor public View(){ lagMeny(); this.getContentPane().add(jta,BorderLayout.CENTER); //hindre minnelekasje fordi programmet startes mange ganger this.setDefaultCloseOperation(EXIT_ON_CLOSE); }//end constructor private void lagMeny() { JMenuBar jmb=new JMenuBar(); JMenu jm_Fil=new JMenu("Fil"); jm_Fil.add(jmi_Endre); jmb.add(jm_Fil); this.setJMenuBar(jmb); } /** * Kobl alle kilder til hendelser til ekstern controll * @param al det objektet som skal håndtere hendelser */ public void addLyttere(ActionListener al){ //koble lytteren til mentitems jmi_Endre.addActionListener(al); } /** * Denne metoden kan brukes av andre for å bestemme hva som skal * være av tekst i tekstområdet * @param s Tekst som skal legges i tekstområdet */ public void setTextICenter(String s){ jta.setText(s); } }//end main import java.util.ArrayList; public class Model { //ArrayList<Fasong> al=new ArrayList<Fasong>(); } import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class Control implements ActionListener{ Model m=new Model(); View v=new View(); //constructor public Control(){ v.setTitle("MVC eksempel"); v.setSize(300,300); v.setLocation(100,100); v.addLyttere(this); v.setVisible(true); }//end constructor public void actionPerformed(ActionEvent evt){ String command=evt.getActionCommand(); if (command.equals("Endre")){ v.setTextICenter("Nå er vi ferdig med å behandel Fil"); } } }//end main public interface Fasong { } Her er det jeg har sutte sammen: (Er hverfall noe galt med klammene..) Klikk for å se/fjerne innholdet nedenfor import javax.swing.*; import java.awt.BorderLayout; import java.awt.event.ActionListener; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JTextArea; import java.util.ArrayList; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class Program { /** * @param args */ public static void main(String[] args) { Control c=new Control(); } } public class Model { //ArrayList<Fasong> al=new ArrayList<Fasong>(); } public interface Fasong { } public class Control implements ActionListener{ Model m=new Model(); View v=new View(); //constructor public Control(){ v.setTitle("MVC eksempel"); v.setSize(300,300); v.setLocation(100,100); v.addLyttere(this); v.setVisible(true); }//end constructor public void actionPerformed(ActionEvent evt){ String command=evt.getActionCommand(); if (command.equals("Endre")){ v.setTextICenter("Nå er vi ferdig med å behandel Fil"); } } }//end main public class View extends JFrame { private JTextArea jta=new JTextArea(); JMenuItem jmi_Endre=new JMenuItem("Endre"); //Constructor public View(){ lagMeny(); this.getContentPane().add(jta,BorderLayout.CENTER); //hindre minnelekasje fordi programmet startes mange ganger this.setDefaultCloseOperation(EXIT_ON_CLOSE); }//end constructor private void lagMeny() { JMenuBar jmb=new JMenuBar(); JMenu jm_Fil=new JMenu("Fil"); jm_Fil.add(jmi_Endre); jmb.add(jm_Fil); this.setJMenuBar(jmb); } /** * Kobl alle kilder til hendelser til ekstern controll * @param al det objektet som skal håndtere hendelser */ public void addLyttere(ActionListener al){ //koble lytteren til mentitems jmi_Endre.addActionListener(al); } /** * Denne metoden kan brukes av andre for å bestemme hva som skal * være av tekst i tekstområdet * @param s Tekst som skal legges i tekstområdet */ public void setTextICenter(String s){ jta.setText(s); } }//end main Lenke til kommentar
magikern Skrevet 20. mars 2007 Del Skrevet 20. mars 2007 (endret) etter en veldig rask gjennomlesning ser jeg ihvertfall en åpenlys ting, du bruker : public class KLASSENAVN hele veien, ved bruk av "public" må fila hete KLASSENAVN.java, så ett tips hvis du vil ha alt dette i en fil er jo da naturligvis å kalle fila opp etter din "hovedklasse" og fjerne "public" foran alle andre klasser... og en liten ting til, hvis du har alt dette i en fil så husk at du legger alle "import" setninger øverst i den fila og ingen duplikater av disse. Endret 20. mars 2007 av magikern Lenke til kommentar
krigun Skrevet 20. mars 2007 Del Skrevet 20. mars 2007 Hmm.. vanligvis pleier man å dele opp i klasser for å få _BEDRE_ oversikt, men.. Lenke til kommentar
Arne Skrevet 20. mars 2007 Del Skrevet 20. mars 2007 Er eg heilt på jordet om eg seier at det ikkje kan vere fleire public klassar i ein fil? Leste det i ei bok. Lenke til kommentar
HV Skrevet 20. mars 2007 Del Skrevet 20. mars 2007 Er eg heilt på jordet om eg seier at det ikkje kan vere fleire public klassar i ein fil? Leste det i ei bok. 8195087[/snapback] Kan være x antall i samme fil, men de blir uansett delt når de blir compilert. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå