Czy ktoś mógłby nam pomóc w poprawieniu projektu? Błąd polega na tym, że plik nie otwiera się z dowolnego katalogu na dysku, a jedynie z tego, w którym mamy nasz program.
Jeżeli widzicie jeszcze jakieś błędy w programie (zwłaszcza jeśli chodzi o zmianę kodowania polskich liter) będziemy wdzięczne za wszelkie poprawki.
Program ma wyglądać tak: http://img505.yfrog.com/i/translator.jpg/
Oto kod programu:
import javax.swing.;
import java.awt.event.;
import java.awt.;
import java.io.;
public class Projekt extends JFrame implements ActionListener
{
StringBuffer txt;
private JFileChooser fc = new JFileChooser(".");
String[] comboTypes = { "Win 1250 -> ISO-8859-2", "Win 1250 -> UTF-8", "ISO-8859-2 -> Win 1250", "UTF-8 -> Win 1250" };
JComboBox cb = new JComboBox(comboTypes);
private JTextArea ta = new JTextArea();
private JTextField jtf1;
private JTextField jtf2;
//------------------------
public static void main(String[] args)
{
new Projekt();
}
//------------------------
public Projekt()
{
setTitle("Zmiana sposobu kodowania polskich liter");
JToolBar tb = new JToolBar();
cb.setSelectedIndex(0);
cb.addActionListener(this);
cb.setMaximumSize(new Dimension(200, 25));
tb.add(cb);
tb.addSeparator();
JButton b = new JButton(new ImageIcon("open.gif"));
b.setActionCommand("Open");
b.setToolTipText("Otwarcie pliku");
b.addActionListener(this);
tb.add(b);
tb.addSeparator();
b = new JButton(new ImageIcon("right.gif"));
b.setActionCommand("Run");
b.setToolTipText("Zmiana kodowania");
b.addActionListener(this);
tb.add(b);
tb.addSeparator();
b = new JButton(new ImageIcon("save.gif"));
b.setActionCommand("Save");
b.setToolTipText("Zapisanie pliku");
b.addActionListener(this);
tb.add(b);
add(tb,BorderLayout.NORTH);
JPanel jp = new JPanel ();
add (jp, BorderLayout.CENTER);
b = new JButton(new ImageIcon("Translator.JPG"));
jp.add(b);
tb = new JToolBar();
tb.setLayout(new GridBagLayout());
GridBagConstraints gBC = new GridBagConstraints();
gBC.fill = GridBagConstraints.HORIZONTAL;
gBC.ipadx = 3;
gBC.ipady = 3;
gBC.insets = new Insets(3,3,3,3);
JLabel l1 = new JLabel("Plik wejściowy");
gBC.weightx = 0.5;
gBC.gridwidth = 1;
gBC.gridx = 0;
gBC.gridy = 0;
tb.add(l1, gBC);
jtf1 = new JTextField("nazwa pliku wejściowego");
gBC.weightx = 0.5;
gBC.gridwidth = 3;
gBC.gridx = 1;
gBC.gridy = 0;
jtf1.setEditable(false);
tb.add(jtf1, gBC);
JLabel l2 = new JLabel("Plik wyjściowy");
gBC.weightx = 0.5;
gBC.gridwidth = 1;
gBC.gridx = 0;
gBC.gridy = 1;
tb.add(l2, gBC);
jtf2 = new JTextField("nazwa pliku wyjściowego");
gBC.weightx = 0.5;
gBC.gridwidth = 3;
gBC.gridx = 1;
gBC.gridy = 1;
jtf2.setEditable(false);
tb.add(jtf2, gBC);
add(tb,BorderLayout.SOUTH);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setResizable(false);
setLocationRelativeTo(null);
setVisible(true);
}
//------------------------
private String readFromFile(String file)
{
txt = new StringBuffer();
try
{
BufferedReader in = new BufferedReader(new FileReader(file));
while (in.ready())
{
txt.append(in.readLine()+"\n");
}
in.close();
}
catch(Exception e)
{
JOptionPane.showMessageDialog(this,e.getMessage(),"",JOptionPane.INFORMATION_MESSAGE);
}
return txt.toString();
}
//------------------------
private void writeToFile(String file)
{
try
{
FileWriter f = new FileWriter(file);
f.write(ta.getText());
f.close();
}
catch(Exception e)
{
JOptionPane.showMessageDialog(this,e.getMessage(),"",JOptionPane.INFORMATION_MESSAGE);
}
return;
}
//------------------------
public void actionPerformed(ActionEvent ae)
{
if(ae.getActionCommand().equals("Run"))
{
StringBuffer txtOld = new StringBuffer();
txtOld.append(ta.getText());
txt = new StringBuffer();
try
{
switch(cb.getSelectedIndex())
{
case 0:
txt.append(new String(new String(txtOld).getBytes("windows-1250"), "ISO-8859-2"));
break;
case 1:
txt.append(new String(new String(txtOld).getBytes("windows-1250"), "UTF-8"));
break;
case 2:
txt.append(new String(new String(txtOld).getBytes("ISO-8859-2"), "windows-1250"));
break;
case 3:
txt.append(new String(new String(txtOld).getBytes("UTF-8"), "windows-1250"));
break;
}
}
catch (UnsupportedEncodingException e)
{
JOptionPane.showMessageDialog(this,""+cb.getSelectedIndex(),"",JOptionPane.INFORMATION_MESSAGE);
JOptionPane.showMessageDialog(this,e.getMessage(),"",JOptionPane.INFORMATION_MESSAGE);
}
ta.setText(txt.toString());
}
if(ae.getActionCommand().equals("Open"))
{
if(fc.showOpenDialog(this) == JFileChooser.APPROVE_OPTION)
{
String plik = fc.getName(fc.getSelectedFile());
ta.setText(readFromFile(plik));
jtf1.setText(plik);
}
}
if(ae.getActionCommand().equals("Save"))
{
if(fc.showSaveDialog(this) == JFileChooser.APPROVE_OPTION)
{
String plik = fc.getName(fc.getSelectedFile());
writeToFile(plik);
jtf2.setText(plik);
}
}
}
}</image>