Question

//Import packages
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;

import java.io.IOException;
import java.io.PrintWriter;
import java.io.File;

//Main class
public class gui1{
//Declare variables
static JFrame frame1;
static Container pane;
static JScrollPane Scroll;
static JButton Submit;
static JLabel Client, DateServiced, NameofPC, Manufacturer, CPUBIT, CPUTYPE, SerialNumber, ProductNumber, Harddriveplug, TypeofHD, MotherboardModel, TypeofRam, ModelofHardDrive, SpeedofHarddrive, AmountofRam, ThingsDone, CustomerStatements, OtherComments, Technician;
static JTextField TClient, TDateServiced, TNameofPC, TManufacturer, TCPUBIT, TCPUTYPE, TSerialNumber, TProductNumber, THarddriveplug, TTypeofHD, TMotherboardModel, TTypeofRam, TModelofHardDrive, TSpeedofHarddrive, TAmountofRam, TTechnician;
static Insets insets;
static JTextArea TThingsDone, TCustomerStatements, TOtherComments;
public static void main (String args[]){
    //Set Look and Feel
    try {UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());}
    catch (ClassNotFoundException e) {}
    catch (InstantiationException e) {}
    catch (IllegalAccessException e) {}
    catch (UnsupportedLookAndFeelException e) {}

    //Create the frame
    frame1 = new JFrame ("Trouble Ticket");
    frame1.setSize (800,800);
    pane = frame1.getContentPane();
    frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );
    insets = pane.getInsets();
    pane.setLayout (null);

    //Create controls
    Submit = new JButton ("Submit");
    Client = new JLabel ("Client");
    DateServiced = new JLabel ("Date Serviced");
    NameofPC = new JLabel ("Designated Name of PC");
    Manufacturer = new JLabel ("Manufacturer of Entire PC Such as HP or Dell");
    CPUBIT = new JLabel ("64 or 32 Bit CPU");
    CPUTYPE = new JLabel ("Model of CPU");
    SerialNumber = new JLabel ("Serial Number on Case");
    ProductNumber = new JLabel ("Product Number on Case");
    Harddriveplug = new JLabel ("Type Of Harddrive connector");
    TypeofHD = new JLabel ("HDD or SDD");
    MotherboardModel = new JLabel ("Moderboard Model");
    TypeofRam = new JLabel ("Type of Ram");
    AmountofRam = new JLabel ("Amount of Ram");
    ModelofHardDrive = new JLabel ("Model of Hard Drive");
    SpeedofHarddrive = new JLabel ("Speed of Hard Drive");
    CustomerStatements = new JLabel ("Customer Statements");
    ThingsDone = new JLabel ("What was done to the Machine");
    OtherComments = new JLabel ("Comments");
    Technician = new JLabel ("Working Technician");

    TClient = new JTextField (25);
    TDateServiced = new JTextField (8);
    TNameofPC = new JTextField (25);
    TManufacturer = new JTextField (25);
    TCPUBIT = new JTextField (2);
    TSerialNumber = new JTextField (20);
    TProductNumber = new JTextField (22);
    THarddriveplug = new JTextField (4);
    TTypeofHD = new JTextField (3);
    TModelofHardDrive = new JTextField (25);
    TSpeedofHarddrive = new JTextField (10);
    TCustomerStatements = new JTextArea (5,20);
    TThingsDone = new JTextArea (5,20);
    TOtherComments = new JTextArea (5,20);
    TTechnician = new JTextField (25);
    TCustomerStatements.setLineWrap(true);
    TOtherComments.setLineWrap(true);
    TThingsDone.setLineWrap(true);

    //Add all components to panel
    pane.add (Client);
    pane.add (DateServiced);
    pane.add (NameofPC);
    pane.add (Manufacturer);
    pane.add (CPUBIT);
    pane.add (SerialNumber);
    pane.add (ProductNumber);
    pane.add (Harddriveplug);
    pane.add (TypeofHD);
    pane.add (ModelofHardDrive);
    pane.add (SpeedofHarddrive);
    pane.add (ThingsDone);
    pane.add (CustomerStatements);
    pane.add (OtherComments);
    pane.add (Technician);
    pane.add (TClient);
    pane.add (TDateServiced); 
    pane.add (TNameofPC); 
    pane.add (TManufacturer);
    pane.add (TCPUBIT);
    pane.add (TSerialNumber);
    pane.add (TProductNumber);
    pane.add (THarddriveplug);
    pane.add (TTypeofHD);
    pane.add (TModelofHardDrive);
    pane.add (TSpeedofHarddrive);
    pane.add (TThingsDone);
    pane.add (TCustomerStatements);
    pane.add (TOtherComments);
    pane.add (TTechnician);

    pane.add(Submit);

    //Place all components
    Client.setBounds (insets.left + 5, insets.top + 5, Client.getPreferredSize().width, Client.getPreferredSize().height);
    TClient.setBounds (Client.getX() + Client.getPreferredSize().width + 35, insets.top + 5, TClient.getPreferredSize().width, TClient.getPreferredSize().height);
    DateServiced.setBounds (Client.getX(), insets.top + 40, DateServiced.getPreferredSize().width, DateServiced.getPreferredSize().height);
    TDateServiced.setBounds (Client.getX() + DateServiced.getPreferredSize().width + 35, insets.top + 40, TDateServiced.getPreferredSize().width, TDateServiced.getPreferredSize().height);
    Manufacturer.setBounds (Client.getX(), DateServiced.getY() + 35, Manufacturer.getPreferredSize().width, Manufacturer.getPreferredSize().height);
    TManufacturer.setBounds (Client.getX() + Manufacturer.getPreferredSize().width + 35, DateServiced.getY() + 35, TManufacturer.getPreferredSize().width, TManufacturer.getPreferredSize().height);
    CPUBIT.setBounds (Client.getX(), Manufacturer.getY() + 35, CPUBIT.getPreferredSize().width, CPUBIT.getPreferredSize().height);
    TCPUBIT.setBounds (Client.getX() + CPUBIT.getY() + 35, Manufacturer.getY() + 35, TCPUBIT.getPreferredSize().width, TCPUBIT.getPreferredSize().height);
    SerialNumber.setBounds (Client.getX(), CPUBIT.getY() + 35, SerialNumber.getPreferredSize().width, SerialNumber.getPreferredSize().height);
    TSerialNumber.setBounds (Client.getX() + SerialNumber.getPreferredSize().width + 35, CPUBIT.getY() + 35, TSerialNumber.getPreferredSize().width, TSerialNumber.getPreferredSize().height);      
    ProductNumber.setBounds (Client.getX(), SerialNumber.getY() + 35, ProductNumber.getPreferredSize().width, ProductNumber.getPreferredSize().height);
    TProductNumber.setBounds (Client.getX() + ProductNumber.getPreferredSize().width + 35, SerialNumber.getY() + 35, TProductNumber.getPreferredSize().width, TProductNumber.getPreferredSize().height);
    Harddriveplug.setBounds (Client.getX(), ProductNumber.getY() + 35, Harddriveplug.getPreferredSize().width, Harddriveplug.getPreferredSize().height);
    THarddriveplug.setBounds (Client.getX() + ProductNumber.getPreferredSize().width + 35, ProductNumber.getY() + 35, THarddriveplug.getPreferredSize().width, THarddriveplug.getPreferredSize().height);
    TypeofHD.setBounds (Client.getX(), Harddriveplug.getY() + 35, TypeofHD.getPreferredSize().width, TypeofHD.getPreferredSize().height);
    TTypeofHD.setBounds (Client.getX() + Harddriveplug.getPreferredSize().width + 35, Harddriveplug.getY() + 35, TTypeofHD.getPreferredSize().width, TTypeofHD.getPreferredSize().height);
    ModelofHardDrive.setBounds (Client.getX(), TypeofHD.getY() + 35, ModelofHardDrive.getPreferredSize().width, ModelofHardDrive.getPreferredSize().height);
    TModelofHardDrive.setBounds (Client.getX() + ModelofHardDrive.getPreferredSize().width + 35, TypeofHD.getY() + 35, TModelofHardDrive.getPreferredSize().width, TModelofHardDrive.getPreferredSize().height);
    SpeedofHarddrive.setBounds (Client.getX(), ModelofHardDrive.getY() +35, SpeedofHarddrive.getPreferredSize().width, SpeedofHarddrive.getPreferredSize().height);
    TSpeedofHarddrive.setBounds (Client.getX() + SpeedofHarddrive.getPreferredSize().width + 35, ModelofHardDrive.getY() +35, TSpeedofHarddrive.getPreferredSize().width, TSpeedofHarddrive.getPreferredSize().height);
    Technician.setBounds (Client.getX(), SpeedofHarddrive.getY() +35, Technician.getPreferredSize().width, Technician.getPreferredSize().height);

    TTechnician.setBounds (Client.getX() + Technician.getPreferredSize().width + 35, TSpeedofHarddrive.getY() +35, TTechnician.getPreferredSize().width, TTechnician.getPreferredSize().height);        

    ThingsDone.setBounds (Client.getX(), Technician.getY() +35, ThingsDone.getPreferredSize().width, ThingsDone.getPreferredSize().height);

    TThingsDone.setBounds (Client.getX(), ThingsDone.getY() +35, TThingsDone.getPreferredSize().width, TThingsDone.getPreferredSize().height);  

    CustomerStatements.setBounds (Client.getX(), TThingsDone.getY() + TThingsDone.getPreferredSize().height +35, CustomerStatements.getPreferredSize().width, CustomerStatements.getPreferredSize().height);

    TCustomerStatements.setBounds (Client.getX(),CustomerStatements.getY() +CustomerStatements.getPreferredSize().height +35, TCustomerStatements.getPreferredSize().width, TCustomerStatements.getPreferredSize().height);

    OtherComments.setBounds (Client.getX() + TCustomerStatements.getPreferredSize().width + 35, CustomerStatements.getY(), OtherComments.getPreferredSize().width, OtherComments.getPreferredSize().height);

    TOtherComments.setBounds (Client.getX() + TCustomerStatements.getPreferredSize().width + 35, TCustomerStatements.getY(), TOtherComments.getPreferredSize().width, TOtherComments.getPreferredSize().height);
    Submit.setBounds(TClient.getX() + TClient.getPreferredSize().width + 65, Client.getY(), Submit.getPreferredSize().width, Submit.getPreferredSize().height);
    //Set frame visible
    frame1.setVisible (true);

    //Button's action
    Submit.addActionListener(new Submitaction()); //Register action
}

public static class Submitaction implements ActionListener{
    public void actionPerformed (ActionEvent e){
        String Clientname = TClient.getText();
        String DateofService = TDateServiced.getText();
        String Nameofpc = TNameofPC.getText();
        String manufacturer = TManufacturer.getText();
        String CPUBit = TCPUBIT.getText();
        String Serialnumber = TSerialNumber.getText();
        String Productnumber = TProductNumber.getText();
        String HardDriveplug = THarddriveplug.getText();
        String Typeofhd = TTypeofHD.getText();
        String ModelofHarddrive = TModelofHardDrive.getText();
        String SpeedofHardDrive = TSpeedofHarddrive.getText();
        String WhatDidtheCustomerSay = TCustomerStatements.getText();
        String WorkDone = TThingsDone.getText();
        String TechniciansComments = TOtherComments.getText();
        String TechnicianWorking = TTechnician.getText();
    }
    public static void Save(String arg[]) throws IOException
    {
        File save = new File("/home/bekk/Outline.txt");
        PrintWriter out = new PrintWriter("home/bekk/Outline.txt"); 
        PrintWriter.println(Clientname);

            }
    }
}

This is all of my code

The part I wish to address is below

public static class Submit implements ActionListener{
    public void actionPerformed (ActionEvent e){
        String Clientname = TClient.getText();
        String DateofService = TDateServiced.getText();
        String Nameofpc = TNameofPC.getText();
        String manufacturer = TManufacturer.getText();
        String CPUBit = TCPUBIT.getText();
        String Serialnumber = TSerialNumber.getText();
        String Productnumber = TProductNumber.getText();
        String HardDriveplug = THarddriveplug.getText();
        String Typeofhd = TTypeofHD.getText();
        String ModelofHarddrive = TModelofHardDrive.getText();
        String SpeedofHardDrive = TSpeedofHarddrive.getText();
        String WhatDidtheCustomerSay = TCustomerStatements.getText();
        String WorkDone = TThingsDone.getText();
        String TechniciansComments = TOtherComments.getText();
        String TechnicianWorking = TTechnician.getText();
    }
    public static void Save(String arg[]) throws IOException
    {
        File save = new File("/home/bekk/Outline.txt");
        PrintWriter out = new PrintWriter("home/bekk/Outline.txt"); 
        PrintWriter.println(Clientname);

            }
    }
}

I am trying to get a string from the textfields/textareas and then save them to a file. I put the part of the code that saves the input to a .txt file in its own method because it throws an exception saying no file exists. How would I access a variable that is getting the value in method Submit and then have it save the value to a text file in method Save.
Or find an alternative way to accomplish my over all goal as mentioned above.

Was it helpful?

Solution

You have a few options.

You Could

Simply handle the error should it occur...

public void actionPerformed (ActionEvent e){
    //...

    File save = new File("/home/bekk/Outline.txt");
    PrintWriter out = null;
    try {
        out = new PrintWriter(save); 
        out.println(Clientname);
        //...
    } catch (IOException exp) {
        JOptionPane.showMessageDialog(null, "Failed to save file", "Error", JOptionPane.ERROR_MESSAGE);
    } finally {
        try {
            out.close();
        } catch (Exception exp) {
        }
    }
}

This is "okay", but you do tend to encapsulate a lot of potentially reusable code within a single method...

You Could

Create a save method and pass the values you want saved to it...

public void actionPerformed (ActionEvent e){
    //...

    File save = new File("/home/bekk/Outline.txt");
    try {
        save(save, Clientname,
            DateofService,
            Nameofpc,
            manufacturer,
            CPUBit,
            Serialnumber,
            Productnumber,
            HardDriveplug,
            Typeofhd,
            ModelofHarddrive,
            SpeedofHardDrive,
            WhatDidtheCustomerSay,
            WorkDone,
            TechniciansComments,
            TechnicianWorking);
    } catch (IOException exp) {
        JOptionPane.showMessageDialog(null, "Failed to save file", "Error", JOptionPane.ERROR_MESSAGE);
    }
}

public void save(File save, String... values) throws IOException {
    PrintWriter out = null;
    try {
        out = new PrintWriter(save); 
        for (String value : values) {
            out.println(value);
        }
    } finally {
        try {
            out.close();
        } catch (Exception exp) {
        }
    }
}

This is still going to require you to handle the IOException yourself, but provides for a reusable piece of code which could be extended/overwritten in the future to provide other possibilities.

You Could

Encapsulate the properties you are trying to save into a Object and use something like Java Architecture for XML Binding (JAXB) to manage it...

But...

None of those are going to fix the "it throws an exception saying no file exists", because the file, simply can't be written.

The most likely cause of this is because the file path does not exist, not that the file does not exist. The system simple can't create a new file in the location you are trying to create it.

You could try something like...

File save = new File("/home/bekk");
if (!save.exists()) {
    JOptionPane.showMessageDialog(this, save + " does not exist", "Error", JOptionPane.ERROR_MESSAGE);    
} else if (!save.isDirectory()) {
    JOptionPane.showMessageDialog(this, save + " is not a directory", "Error", JOptionPane.ERROR_MESSAGE);    
}

To check it.

While there are a number of possible solutions, in your case, it might be better to use something like...

File save = new File(System.getProperty("user.home"));

Which will give you the user's home directory...

If you need to, you can also use File#mkdirs to create the required directory structure...

File save = new File("/home/bekk");
if (save.exists() || save.mkdirs()) {
    save = new File(save + File.separator + "Outline.txt");
    //...
}

OTHER TIPS

Just make it a global/class variable so you can access it anywhere from your class.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top