supernapa Skrevet 20. mars 2006 Del Skrevet 20. mars 2006 (endret) Jeg har lagd et lite program der jeg har opprettet en meny med følgende valg: Fornavn: JText Etternavn: Jext Kjønn: Kvinne (Radiobutton) Mann (RadioButton) Jbutton1 = Registrer Jbutton2 = Tøm Jbutton3 = Avslutt Intensjonen her er at når jeg skriver inn i verdier i de gitte feltene så skal de lagres i minnet - og ved å trykke på Button1 - så skal verdiene jeg har fyllt inn skrives direkte ut i et dosvindu - Jeg er fryktelig dårlig i dette , så håper noen kan forklare litt enkelt. Noe sier meg at jeg enkelt kan løse denne oppgaven ved å deklarere en string-variabel basert /****************************************************************/ /* oppgave2 */ /* */ /****************************************************************/ import java.awt.*; import java.awt.event.*; import javax.swing.*; /** * Summary description for oppgave2 * */ public class oppgave2 extends JFrame { // Variables declaration private JLabel jLabel1; private JLabel jLabel2; private JRadioButton jRadioButton1; private JRadioButton jRadioButton2; private JTextField jTextField1; private JTextField jTextField2; private JButton jButton1; private JButton jButton2; private JButton jButton3; private JPanel contentPane; // End of variables declaration public oppgave2() { super(); initializeComponent(); // // TODO: Add any constructor code after initializeComponent call // this.setVisible(true); } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always regenerated * by the Windows Form Designer. Otherwise, retrieving design might not work properly. * Tip: If you must revise this method, please backup this GUI file for JFrameBuilder * to retrieve your design properly in future, before revising this method. */ private void initializeComponent() { jLabel1 = new JLabel(); jLabel2 = new JLabel(); jRadioButton1 = new JRadioButton(); jRadioButton2 = new JRadioButton(); jTextField1 = new JTextField(); jTextField2 = new JTextField(); jButton1 = new JButton(); jButton2 = new JButton(); jButton3 = new JButton(); contentPane = (JPanel)this.getContentPane(); // // jLabel1 // jLabel1.setText("Fornavn"); // // jLabel2 // jLabel2.setText("Etternavn"); // // jRadioButton1 // jRadioButton1.setText("Kvinne"); jRadioButton1.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { jRadioButton1_itemStateChanged(e); } }); // // jRadioButton2 // jRadioButton2.setText("Mann"); jRadioButton2.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { jRadioButton2_itemStateChanged(e); } }); // // jTextField1 // jTextField1.setText("jTextField1"); jTextField1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { jTextField1_actionPerformed(e); } }); // // jTextField2 // jTextField2.setText("jTextField2"); jTextField2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { jTextField2_actionPerformed(e); } }); // // jButton1 // jButton1.setText("Registrer"); jButton1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { jButton1_actionPerformed(e); } }); // // jButton2 // jButton2.setText("Tøm SKjema"); jButton2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { jButton2_actionPerformed(e); } }); // // jButton3 // jButton3.setText("Avslutt"); jButton3.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { jButton3_actionPerformed(e); } }); // // contentPane // contentPane.setLayout(null); addComponent(contentPane, jLabel1, 47,86,60,18); addComponent(contentPane, jLabel2, 44,124,60,18); addComponent(contentPane, jRadioButton1, 238,84,100,24); addComponent(contentPane, jRadioButton2, 239,117,100,24); addComponent(contentPane, jTextField1, 113,87,100,22); addComponent(contentPane, jTextField2, 112,123,100,22); addComponent(contentPane, jButton1, 23,243,83,28); addComponent(contentPane, jButton2, 126,242,106,28); addComponent(contentPane, jButton3, 261,242,83,28); // // oppgave2 // this.setTitle("oppgave2 - extends JFrame"); this.setLocation(new Point(0, 0)); this.setSize(new Dimension(390, 300)); } /** Add Component Without a Layout Manager (Absolute Positioning) */ private void addComponent(Container container,Component c,int x,int y,int width,int height) { c.setBounds(x,y,width,height); container.add(c); } // // TODO: Add any appropriate code in the following Event Handling Methods // private void jRadioButton1_itemStateChanged(ItemEvent e) { System.out.println("\njRadioButton1_itemStateChanged(ItemEvent e) called."); System.out.println(">>" + ((e.getStateChange() == ItemEvent.SELECTED) ? "selected":"unselected")); // TODO: Add any handling code here } private void jRadioButton2_itemStateChanged(ItemEvent e) { System.out.println("\njRadioButton2_itemStateChanged(ItemEvent e) called."); System.out.println(">>" + ((e.getStateChange() == ItemEvent.SELECTED) ? "selected":"unselected")); // TODO: Add any handling code here } private void jTextField1_actionPerformed(ActionEvent e) { System.out.println("\njTextField1_actionPerformed(ActionEvent e) called."); // TODO: Add any handling code here } private void jTextField2_actionPerformed(ActionEvent e) { System.out.println("\njTextField2_actionPerformed(ActionEvent e) called."); // TODO: Add any handling code here } private void jButton1_actionPerformed(ActionEvent e) { System.out.println("\njButton1_actionPerformed(ActionEvent e) called."); // TODO: Add any handling code here } private void jButton2_actionPerformed(ActionEvent e) { System.out.println("\njButton2_actionPerformed(ActionEvent e) called."); // TODO: Add any handling code here } private void jButton3_actionPerformed(ActionEvent e) { System.out.println("\njButton3_actionPerformed(ActionEvent e) called."); // TODO: Add any handling code here } // // TODO: Add any method code to meet your needs in the following area // //============================= Testing ================================// //= =// //= The following main method is just for testing this class you built.=// //= After testing,you may simply delete it. =// //======================================================================// public static void main(String[] args) { JFrame.setDefaultLookAndFeelDecorated(true); JDialog.setDefaultLookAndFeelDecorated(true); try { UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); } catch (Exception ex) { System.out.println("Failed loading L&F: "); System.out.println(ex); } new oppgave2(); } //= End of Testing = } Endret 20. mars 2006 av supernapa Lenke til kommentar https://www.diskusjon.no/topic/553111-hvordanskrive-fra-skjema-til-dosvindufil/
Edorph Skrevet 20. mars 2006 Del Skrevet 20. mars 2006 Det første du kan gjøre er jo å legge JRadioButton'ene i en ButtonGroup. Da slipper du å tenke på at ikke begge skal kunne velges samtidig. private JButton jButton3; private JPanel contentPane; private ButtonGroup bgSex; // End of variables declaration (...) // // jRadioButton1 // bgSex.add(jRadioButton1); // Legg til radiobutton i ButtonGroup (...) // // jRadioButton2 // bgSex.add(jRadioButton2); // Legg til radiobutton i ButtonGroup Siden programmet skal avsluttes når du klikker på Avslutt, legger du inn koden for det i ActionListener'en til jButton3. I koden din kalles en metode som heter jButton3_actionPerformed(ActionEvent e) inni ActionListener'en, så da kan vi putte avslutt-koden i denne metoden istedet (blir litt ryddigere): private void jButton3_actionPerformed(ActionEvent e) { System.out.println("\njButton3_actionPerformed(ActionEvent e) called."); // TODO: Add any handling code here System.exit(0); } I tillegg bør du legge denne linja i metoden initializeComponent this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Det sørger for at programmet blir avsluttet skikkelig når du lukker vinduet. Jeg vet ikke om jeg forsto helt hva som skulle skje når du klikker på Register, men jeg antar at alle personene du har registrert skal skrives ut. Dette er jo ikke den peneste måten å gjøre det på, men det funker så lenge du ikke skal ha mer funksjonalitet. Først lager du en string som kan nåes fra alle funksjonene i klassen. private JButton jButton3; private JPanel contentPane; private ButtonGroup bgSex; private String szMedlemmer = ""; // End of variables declaration Så skriver du koden som legger til medlemmer i den strengen. Siden det skal skje når du klikker på jButton1, kan du skrive det i ActionListener'en til jButton3, i funksjonen actionPerformed. For ryddighetens skyld er som sagt koden i disse funksjonene flyttet til jButtonX_actionPerformed. private void jButton1_actionPerformed(ActionEvent e) { System.out.println("\njButton1_actionPerformed(ActionEvent e) called."); // TODO: Add any handling code here String sex = ""; if(jRadioButton1.isSelected()) sex = "Kvinne"; else sex = "Mann"; szMembers += jTextField2.getText() + ", " + jTextField1.getText() + " (" + sex + ")\n"; System.out.println(szMembers); } Håper det «made sense» Lenke til kommentar https://www.diskusjon.no/topic/553111-hvordanskrive-fra-skjema-til-dosvindufil/#findComment-5782417
supernapa Skrevet 20. mars 2006 Forfatter Del Skrevet 20. mars 2006 Det ble litt mye på en gang .... men jeg prøver meg fram litt her nå så skal vi se om jeg klarer å kompilere .. eller om jeg får så mye feilmeldinger at jeg blir gal Lenke til kommentar https://www.diskusjon.no/topic/553111-hvordanskrive-fra-skjema-til-dosvindufil/#findComment-5782825
Edorph Skrevet 20. mars 2006 Del Skrevet 20. mars 2006 Hvis det er lettere å se koden som helhet, så ble min sånn: http://home.online.no/~frnil3/Oppgave2.html Lenke til kommentar https://www.diskusjon.no/topic/553111-hvordanskrive-fra-skjema-til-dosvindufil/#findComment-5782882
supernapa Skrevet 20. mars 2006 Forfatter Del Skrevet 20. mars 2006 (endret) Hvis det er lettere å se koden som helhet, så ble min sånn: http://home.online.no/~frnil3/Oppgave2.html 5782882[/snapback] genialt!! takker så mye! Men hva hvis jeg vil lagre til fil også? Endret 20. mars 2006 av supernapa Lenke til kommentar https://www.diskusjon.no/topic/553111-hvordanskrive-fra-skjema-til-dosvindufil/#findComment-5782950
Edorph Skrevet 20. mars 2006 Del Skrevet 20. mars 2006 (endret) Prøv å endre koden i jButton1_actionPerformed(ActionEvent e) til dette: private void jButton1_actionPerformed(ActionEvent e) { System.out.println("\njButton1_actionPerformed(ActionEvent e) called."); String szNewMember = ""; File f = new File("members.txt"); String sex = ""; if(jRadioButton1.isSelected()) sex = "Kvinne"; else sex = "Mann"; szNewMember += jTextField2.getText() + ", " + jTextField1.getText() + " (" + sex + ")\n"; try { FileWriter fw = new FileWriter(f, true); // true fordi vi skal «appende», og ikke overskrive BufferedWriter bw = new BufferedWriter(fw); PrintWriter fpw = new PrintWriter(bw); fpw.write(szNewMember); // Legger til en linje i fila med det nye medlemmet fpw.close(); BufferedReader br = new BufferedReader(new FileReader(f)); String line = null; while ((line=br.readLine()) != null) { System.out.println(line); // Skriver ut hver linje i fila } br.close(); } catch(IOException ioeWrite) { System.out.println("Error writing to file! [" + ioeWrite.getMessage() + "]"); } } For å bruke IO-klassene må du ha med denne linja helt i begynnelsen: import java.io.*; Du kan dessuten fjerne denne: private String szMembers = ""; Endret 20. mars 2006 av Edorph Lenke til kommentar https://www.diskusjon.no/topic/553111-hvordanskrive-fra-skjema-til-dosvindufil/#findComment-5783978
supernapa Skrevet 20. mars 2006 Forfatter Del Skrevet 20. mars 2006 bra bra! men du har ikke source på den siste også ? Lenke til kommentar https://www.diskusjon.no/topic/553111-hvordanskrive-fra-skjema-til-dosvindufil/#findComment-5784345
Edorph Skrevet 20. mars 2006 Del Skrevet 20. mars 2006 Jovisst http://home.online.no/~frnil3/Oppgave2_mIO.html Lenke til kommentar https://www.diskusjon.no/topic/553111-hvordanskrive-fra-skjema-til-dosvindufil/#findComment-5784393
supernapa Skrevet 20. mars 2006 Forfatter Del Skrevet 20. mars 2006 Kjempebra Du har ikke lyst å gjøre resten av øvinga mi og? hehe Lenke til kommentar https://www.diskusjon.no/topic/553111-hvordanskrive-fra-skjema-til-dosvindufil/#findComment-5784535
Edorph Skrevet 20. mars 2006 Del Skrevet 20. mars 2006 Hehe, næh. Prøv selv, så får du heller spørre hvis det er noe du lurer på. Lenke til kommentar https://www.diskusjon.no/topic/553111-hvordanskrive-fra-skjema-til-dosvindufil/#findComment-5784661
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å