タブ付きペイン内のパネルにあるテキストエリアの内容を保存しようとしています。
これまでのところ、私は試しました:
bw.write(tabbedPane.getComponent(tabbedPane.getSelectedIndex()).toString());
タブペインのすべての方法を調べてきましたが、うまくいかないようです。から選択したコンポーネントを取得しtabbedPane
、そこからテキストエリアを取得してから、それを文字列に変換する必要があることはわかっていますか?
ファイルを開くときのコードは次のとおりです。
private void btnOpenActionPerformed(java.awt.event.ActionEvent evt) {
int returnVal = fileChooser.showOpenDialog(this);
if (returnVal == fileChooser.APPROVE_OPTION) {
File file = fileChooser.getSelectedFile();
try {
JPanel p = new JPanel();
p.setLayout(new BorderLayout());
JTextArea x = new JTextArea();
JScrollPane scroll = new JScrollPane(x);
p.add(scroll, BorderLayout.CENTER);
x.read( new FileReader( file.getAbsolutePath() ), null );
File selectedFile = fileChooser.getSelectedFile();
String name = selectedFile.getName();
tabbedPane.add(p,name);
tabbedPane.setSelectedComponent(p);
} catch (IOException ex) {
System.out.println("problem accessing file"+file.getAbsolutePath());
}
} else {
System.out.println("File access cancelled by user.");
}
}
Update Current SaveAs メソッドを主張したので、クラスを追加しました。
private void btnSaveAsActionPerformed(java.awt.event.ActionEvent evt) {
int returnVal = fileChooser.showSaveDialog(this);
if (returnVal == fileChooser.APPROVE_OPTION) {
File dir1 = fileChooser.getCurrentDirectory();
String dir = dir1.getPath();
String name = fileChooser.getSelectedFile().getName() + ".txt";
try {
File file = new File(dir,name);
FileWriter fw = new FileWriter(file);
BufferedWriter bw = new BufferedWriter(fw);
JPanel no = (JPanel) tabbedPane.getSelectedComponent();
JTextArea bo = (JTextArea) no.get
bw.write(bo.getText());
bw.close();
tabbedPane.setTitleAt(tabbedPane.getSelectedIndex(), name);
} catch(Exception e) {
System.out.println(e);
}
}
}
現在開いているファイルの方法:
private void btnOpenActionPerformed(java.awt.event.ActionEvent evt) {
int returnVal = fileChooser.showOpenDialog(this);
if (returnVal == fileChooser.APPROVE_OPTION) {
File file = fileChooser.getSelectedFile();
try {
FilePanel p = new FilePanel(file);
tabbedPane.add(p,p.getName());
tabbedPane.setSelectedComponent(p);
} catch (IOException ex) {
System.out.println("problem accessing file"+file.getAbsolutePath());
}
} else {
System.out.println("File access cancelled by user.");
}
}
新しいクラスの新しいオブジェクトを配列に追加する必要がありますか?それとも、それらを tabbedPane に挿入するだけで問題ありませんか?