TOP →
Java →
Swing →
JTabbedPane → This Page
JTabbedPane@Swing サンプル10
概要
Java -
Swing -
JTabbedPane のサンプルです。
・タブに閉じるボタンを追加
解説
タブに閉じるボタン(アイコン)を追加しています。
閉じるボタン(アイコン)をクリックすると、そのタブが閉じられます。
サンプルイメージ
サンプルソース
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
/**
* JTabbedPane サンプル10
* ・タブに閉じるボタンを追加
*
* @author みっちー
*/
public class JTabbedPane10 extends JFrame {
private static final long serialVersionUID = 1L;
/**
* 開始メソッド
*
* @param args パラメータ
*/
public static void main(String[] args) {
JTabbedPane10 frame = new JTabbedPane10();
// 閉じるボタンをクリックされた場合の動作を設定
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// ウインドウのタイトルを設定
frame.setTitle("JTabbedPane サンプル10");
// フレームの X座標、Y座標、幅、高さを設定
frame.setBounds(100, 200, 400, 200);
// フレームを表示(これをしないと透明のフレームが立ち上がってしまう)
frame.setVisible(true);
}
/**
* コンストラクタ
*/
public JTabbedPane10() {
// タブパネを生成
TabbedPaneEx tabPane = new TabbedPaneEx();
// タブを追加
tabPane.addTab("File", new JButton("button"));
tabPane.addTab("Edit", new JButton("button"));
tabPane.addTab("Help", new JButton("button"));
// ニーモニックを設定
tabPane.setMnemonicAt(0, KeyEvent.VK_F);
tabPane.setMnemonicAt(1, KeyEvent.VK_E);
tabPane.setMnemonicAt(2, KeyEvent.VK_H);
// 見やすいようにフォントを変更
tabPane.setFont(new Font("MS ゴシック", Font.BOLD, 24));
// パネを追加
getContentPane().add(tabPane);
}
}
class TabbedPaneEx extends JTabbedPane {
private static final long serialVersionUID = 1L;
private final ImageIcon icon;
private final Dimension buttonSize;
/**
* コンストラクタ
*/
public TabbedPaneEx() {
super();
// 閉じるボタンのアイコンとサイズ
this.icon = new ImageIcon("./img/close.png");
buttonSize = new Dimension(icon.getIconWidth() + 5, icon.getIconHeight());
}
/**
* タブ追加
*
* @param title タイトル
* @param component コンポーネント
*/
public void addTab(String title, final JComponent component) {
// パネルを生成
JPanel panel = new JPanel(new BorderLayout());
panel.setOpaque(false);
// ラベルを生成
JLabel label = new JLabel(title);
label.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 4));
// ボタンを生成
JButton button = new JButton(icon);
button.setPreferredSize(buttonSize);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
removeTabAt(indexOfComponent(component));
}
});
// パネルにラベルとボタンを追加
panel.add(label, BorderLayout.WEST);
panel.add(button, BorderLayout.EAST);
super.addTab(null, component);
setTabComponentAt(getTabCount() - 1, panel);
}
}
サンプルソースのダウンロード
ソースのダウンロード(Eclipse用のプロジェクトファイルも同梱)
更新履歴
2016/08/27 新規作成
TOP →
Java →
Swing →
JTabbedPane → This Page