JFrame Skrevet 20. mars 2007 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
magikern Skrevet 20. mars 2007 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
krigun Skrevet 20. mars 2007 Skrevet 20. mars 2007 Hmm.. vanligvis pleier man å dele opp i klasser for å få _BEDRE_ oversikt, men..
Arne Skrevet 20. mars 2007 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.
HV Skrevet 20. mars 2007 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.
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å