шпаргалки
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

125 lines
4.1 KiB

2 years ago
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package propertiesswing;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Label;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
/**
*
* @author denis
*/
public class MainFrame extends JFrame{
private File file;
private Properties properties;
private JTextField currentField = new JTextField(50);
private JTextField powerField = new JTextField(50);
private JTextField frecField = new JTextField(50);
public MainFrame(){
setTitle("Propetries");
setSize(600, 600);
Container container = getContentPane();
GridLayout layout = new GridLayout(0, 1);
container.setLayout(layout);
container.add(initManageButtons());
container.add(initFields("Current: ", currentField));
container.add(initFields("Power: ", powerField));
container.add(initFields("Frec: ", frecField));
setLocationRelativeTo(null);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
pack();
setVisible(true);
}
private JPanel initFields(String textLabel, JTextField field){
JPanel panel = new JPanel(new FlowLayout());
JLabel label = new JLabel(textLabel);
panel.add(label);
panel.add(field);
return panel;
}
private void initFileChooser(){
JFileChooser chooser = new JFileChooser();
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
int result = chooser.showOpenDialog(this);
if(result == JFileChooser.APPROVE_OPTION){
file = chooser.getSelectedFile();
}
}
private JPanel initManageButtons(){
JPanel panel = new JPanel(new FlowLayout(10, 20, 20));
JButton openButton = new JButton("Open file");
panel.add(openButton);
openButton.addActionListener(e -> {
initFileChooser();
if(file!=null && file.exists() && file.canRead()){
loadProperties();
if(properties!=null) {
if(currentField!=null) currentField.setText(properties.getProperty("Current"));
if(powerField!=null) powerField.setText(properties.getProperty("Power"));
if(frecField!=null) frecField.setText(properties.getProperty("Frec"));
}
}
});
JButton saveButton = new JButton("Save file");
panel.add(saveButton);
saveButton.addActionListener(e -> {
if(file!=null && properties!=null){
properties.put("Current", currentField.getText());
properties.put("Power", powerField.getText());
properties.put("Frec", frecField.getText());
saveProperties();
}
});
return panel;
}
private void loadProperties(){
properties = new Properties();
try {
properties.load(new FileReader(file));
} catch (FileNotFoundException ex) {
Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex);
}
}
private void saveProperties(){
if(properties!=null){
try {
properties.store(new FileWriter(file), null);
} catch (IOException ex) {
Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}