Gå til innhold

Hvordanskrive fra skjema til dosvindu/fil ?


Anbefalte innlegg

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 av supernapa
Lenke til kommentar
Videoannonse
Annonse

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

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 av Edorph
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...