java GUI如何保存到文本文件

时间:2017-03-17 15:01:50

标签: java user-interface

我需要将文本从文本框保存到文本文件,但是我发现的任何代码或使其无效,任何想法?像任何一个一样?哪些代码可以工作。我不得不使用java gui,我的老师教我们关于java,但没有关于GUI,所以我甚至不能保存到文本文件。

public class FlightsPanel extends JPanel {
private Flight flightSelected = null;
private JTextField textFieldDepartureAirport;
private JTextField textFieldArrivalAirport;
private JTextField textFieldDepartureDate;
private JTextField textFieldArrivalDate;
private JRadioButton rdbtnBoarding;
private JRadioButton rdbtnChecking;
private JRadioButton rdbtnAvailable;
private JRadioButton rdbtnClosed;
private JTextField textFieldCost;

private DefaultListModel<String> populateFlights() {
    DefaultListModel<String> list = new DefaultListModel<String>();
    ArrayList<Flight> FlightList = MainMenu.getAirlineMgr().getFlightList();

    for (int i = 0; i < FlightList.size(); i++) {
        list.addElement(FlightList.get(i).getFlightNumber());
    }

    return list;
}

private void displayFlight(String number) {
    flightSelected = MainMenu.getAirlineMgr().getFlightByNumber(number);
    textFieldDepartureAirport.setText(flightSelected.getDepartureAirport());
    textFieldArrivalAirport.setText(flightSelected.getArrivalAirport());
    textFieldDepartureDate.setText(flightSelected.getDepartureDate().toString());
    textFieldArrivalDate.setText(flightSelected.getArrivalDate().toString());
    textFieldCost.setText(Double.toString(flightSelected.getCost()));

    if (flightSelected.getFlightStatus() == Flight.Status.AVAILABLE) {
        rdbtnAvailable.setSelected(true);
    } else {
        if (flightSelected.getFlightStatus() == Flight.Status.BOARDING) {
            rdbtnBoarding.setSelected(true);
        } else {
            if (flightSelected.getFlightStatus() == Flight.Status.CHECKING) {
                rdbtnChecking.setSelected(true);
            } else {
                if (flightSelected.getFlightStatus() == Flight.Status.CLOSED) {
                    rdbtnClosed.setSelected(true);
                }
            }
        }
    }
}

private void saveFlight() {
    flightSelected.setDepartureAirport(textFieldDepartureAirport.getText());
    flightSelected.setArrivalAirport(textFieldArrivalAirport.getText());
    flightSelected.setCost(Double.parseDouble(textFieldCost.getText()));

    // flightSelected.setDepartureDate(textFieldDepartureDate.getText());
    // flightSelected.setArrivalDate(textFieldArrivalDate.getText());

    if (rdbtnAvailable.isSelected()) {
        flightSelected.setFlightStatus(Flight.Status.AVAILABLE);
    } else {
        if (rdbtnBoarding.isSelected()) {
            flightSelected.setFlightStatus(Flight.Status.BOARDING);
        } else {
            if (rdbtnChecking.isSelected()) {
                flightSelected.setFlightStatus(Flight.Status.CHECKING);
            } else {
                if (rdbtnClosed.isSelected()) {
                    flightSelected.setFlightStatus(Flight.Status.CLOSED);
                }
            }
        }
    }
}

public FlightsPanel() {
    setBackground(new Color(175, 238, 238));
    setLayout(null);

    JList list = new JList(populateFlights());
    list.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent arg0) {
            displayFlight(list.getSelectedValue().toString());
        }
    });
    list.setBorder(new LineBorder(new Color(0, 0, 0), 1, true));
    list.setBounds(141, 161, 89, 81);
    add(list);

    JLabel lblNewLabel = new JLabel("Available flights:");
    lblNewLabel.setBounds(141, 136, 121, 14);
    add(lblNewLabel);

    textFieldDepartureAirport = new JTextField();
    textFieldDepartureAirport.setBounds(206, 36, 112, 20);
    add(textFieldDepartureAirport);
    textFieldDepartureAirport.setColumns(10);

    JLabel lblNewLabel_1 = new JLabel("Departure Airport:");
    lblNewLabel_1.setBounds(206, 11, 112, 14);
    add(lblNewLabel_1);

    textFieldArrivalAirport = new JTextField();
    textFieldArrivalAirport.setColumns(10);
    textFieldArrivalAirport.setBounds(10, 36, 112, 20);
    add(textFieldArrivalAirport);

    JLabel lblArrivalAirport = new JLabel("Arrival Airport:");
    lblArrivalAirport.setBounds(10, 11, 112, 14);
    add(lblArrivalAirport);

    textFieldDepartureDate = new JTextField();
    textFieldDepartureDate.setColumns(10);
    textFieldDepartureDate.setBounds(206, 91, 192, 20);
    add(textFieldDepartureDate);

    JLabel lblDepartureDate = new JLabel("Departure Date:");
    lblDepartureDate.setBounds(206, 67, 112, 14);
    add(lblDepartureDate);

    textFieldArrivalDate = new JTextField();
    textFieldArrivalDate.setColumns(10);
    textFieldArrivalDate.setBounds(10, 91, 192, 20);
    add(textFieldArrivalDate);

    JLabel lblArrivalDate = new JLabel("Arrival Date:");
    lblArrivalDate.setBounds(10, 66, 112, 14);
    add(lblArrivalDate);

    rdbtnBoarding = new JRadioButton("BOARDING");
    rdbtnBoarding.setBounds(10, 211, 112, 23);
    add(rdbtnBoarding);

    rdbtnChecking = new JRadioButton("CHECKING");
    rdbtnChecking.setBounds(10, 237, 112, 23);
    add(rdbtnChecking);

    rdbtnAvailable = new JRadioButton("AVAILABLE");
    rdbtnAvailable.setBounds(10, 159, 112, 23);
    add(rdbtnAvailable);

    JLabel lblStatus = new JLabel("Status:");
    lblStatus.setBounds(20, 138, 220, 14);
    add(lblStatus);

    rdbtnClosed = new JRadioButton("CLOSED");
    rdbtnClosed.setBounds(10, 185, 112, 23);
    add(rdbtnClosed);

    ButtonGroup group = new ButtonGroup();
    group.add(rdbtnBoarding);
    group.add(rdbtnChecking);
    group.add(rdbtnAvailable);
    group.add(rdbtnClosed);

    JButton button = new JButton("Cancel");
    button.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            MainMenu.hideFlights();
        }
    });
    button.setBounds(10, 269, 89, 23);
    add(button);

    JButton btnConfirm = new JButton("Confirm");
    btnConfirm.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            saveFlight();
            MainMenu.hideFlights();

        }
    });
    btnConfirm.setBounds(351, 269, 89, 23);
    add(btnConfirm);

    JLabel lblCost = new JLabel("Cost:");
    lblCost.setBounds(341, 11, 112, 14);
    add(lblCost);

    textFieldCost = new JTextField();
    textFieldCost.setColumns(10);
    textFieldCost.setBounds(328, 36, 112, 20);
    add(textFieldCost);
}

} pic of design

1 个答案:

答案 0 :(得分:0)

您可以使用Java编写基本文件。这里与基本文件编写的唯一区别是,您需要从对象的文本属性中获取字符串。以下是您的代码中的一个示例:

import java.io.PrintWriter;

try{
    PrintWriter fileWriter = new PrintWriter("myFile.txt", "UTF-8");
    fileWriter.println(textFieldDepartureAirport.selectAll());
    fileWriter.close();
} catch (IOException e) {
   e.printStackTrace();
}

由于您的老师没有详细介绍UI项目,因此您可以查找有关保存数据的对象类型的JavaDoc信息。例如,您的文本框被声明为JTextField,因此您可以在此处找到有关此类的更多信息:

https://docs.oracle.com/javase/7/docs/api/javax/swing/JTextField.html

相关问题