FilePanel と呼ばれるカスタム クラスを使用するタブ付きペインにタブがあり、それがこれを少し混乱させています。ファイルを保存およびロードするためのものであるため、クラス File Panel です。各タブの右側にアイコンの小さなボタンを追加したいと思います。クリックすると、その特定のタブが閉じます。
ファイル パネル クラス:
package texteditor;
import java.util.*;
import java.io.*;
import javax.swing.*;
import java.io.File.*;
import java.awt.*;
import javax.swing.filechooser.FileNameExtensionFilter;
class FilePanel extends JPanel {
private File file;
private JTextArea textArea;
private String name;
public FilePanel(File file) throws FileNotFoundException, IOException {
this.file = file;
setLayout(new BorderLayout());
textArea = new JTextArea();
JScrollPane scroll = new JScrollPane(textArea);
add(scroll, BorderLayout.CENTER);
textArea.read(new FileReader(file.getAbsolutePath()), null);
name = file.getName();
}
public FilePanel() {
try
{
setLayout(new BorderLayout());
textArea = new JTextArea();
JScrollPane scroll = new JScrollPane(textArea);
add(scroll, BorderLayout.CENTER);
textArea.read(new FileReader(file.getAbsolutePath()), null);
name = file.getName();
}
catch(Exception e)
{
System.out.println(e);
}
}
public File getFile() {
return file;
}
public JTextArea getTextArea() {
return textArea;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
新しいフレーム メソッドの追加:
private void btnNewActionPerformed(java.awt.event.ActionEvent evt) {
increment++;
try
{
FilePanel p = new FilePanel();
p.setName("File " + increment);
//code im testing goes here and I just remove the 3 you see below.
tabbedPane.add(p);
tabbedPane.setBorder(BorderFactory.createEmptyBorder(2, 0, 0, 0));
tabbedPane.setSelectedComponent(p);
}
catch(Exception e)
{
System.out.println(e);
}
}
私が試しているが役に立たないコード:
Icon icon = new ImageIcon(getClass().getResource("redclose.png"));
JButton butt = new JButton();
butt.setIcon(icon);
butt.setIconTextGap(5);
butt.setHorizontalTextPosition(SwingConstants.RIGHT);
tabbedPane.setTabComponentAt(0, butt);
これは、アイコン自体に対してのみ機能します。
Icon icon = new ImageIcon(getClass().getResource("redclose.png"));
tabbedPane.setIconAt(tabbedPane.getSelectedIndex(), icon);