Java SwingのJTabbedPaneで選択中のタブを強調表示する方法
JTabbedPaneとは
JTabbedPaneは、JComponentクラスのサブクラスで、複数のパネルに簡単にアクセスできるようにするSwingコンポーネントです。各タブには1つのコンポーネントが関連付けられており、そのタブを選択すると対応するコンポーネントが表示されます。また、JTabbedPaneはタブが選択されたときにChangeListenerインターフェースを発生させることができます。
選択中のタブを強調表示する方法
選択されたタブを特定の色で強調表示したい場合は、UIManagerクラスの静的メソッドput()を使用します。「TabbedPane.selected」というキーに対して任意のColorオブジェクトを設定するだけで、選択中のタブの背景色を簡単に変更できます。
ポイント
- UIManager.put("TabbedPane.selected", Color.gray)のように、JTabbedPaneを生成する前に呼び出す必要があります。
- 色はColorクラスの定数(Color.grayなど)でも、独自のRGB値でも指定可能です。
コード例
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class SelectedJTabbedPaneTest extends JFrame implements ActionListener {
private JTabbedPane tabbedPane;
int tab = 0;
public SelectedJTabbedPaneTest() {
setTitle("SelectedJTabbedPane Test");
setLayout(new BorderLayout());
// 選択されたタブの色をグレーに設定
UIManager.put("TabbedPane.selected", Color.gray);
tabbedPane = new JTabbedPane();
createTab();
add(tabbedPane, BorderLayout.CENTER);
setJMenuBar(createMenuBar());
setSize(375, 250);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
public JMenuBar createMenuBar() {
JMenuBar menuBar = new JMenuBar();
JMenu menu = new JMenu("JTabbedPane");
JMenuItem menuItem = new JMenuItem("Create a new tab");
menuItem.addActionListener(this);
menu.add(menuItem);
menuBar.add(menu);
return menuBar;
}
public void actionPerformed(ActionEvent ae) {
if (ae.getActionCommand().equals("Create a new tab")) {
createTab();
}
}
public void createTab() {
tab++;
tabbedPane.addTab("Tab " + tab, new JLabel("Tab " + tab));
}
public static void main(String []args) {
new SelectedJTabbedPaneTest();
}
}実行結果
このプログラムを実行すると、現在選択されているタブがグレー色で強調表示されます。メニューから「Create a new tab」を選択すると新しいタブが追加され、タブを切り替えるたびに選択中のタブだけがグレーに変わることを確認できます。
-
Javaで単一のJTabbedPaneに複数のタブを挿入する方法
JTabbedPaneとはJTabbedPaneはJComponentクラスを拡張したコンポーネントで、一度に表示できるタブは1つだけです。各タブには1つのコンポーネントが関連付けられており、そのタブが選択されると対応するコンポーネントが表示されます。JTabbedPaneは、タブが選択された際にChangeListenerインターフェースを通じてイベントを発生させることができます。さらに、1つのJTabbedPaneに複数のタブを挿入することも可能です。JTabbedPaneの主なメソッドには、addTab()、fireStateChanged()、getTabPlacement()、set
-
JavaでJPanelのpaintComponent()メソッドを実装する方法をわかりやすく解説
JPanelはJavaにおける軽量コンテナであり、それ自体は不可視(インビジブル)なコンポーネントとして扱われます。デフォルトのレイアウトにはFlowLayoutが採用されています。JPanelを生成した後は、Containerクラスから継承されたadd()メソッドを呼び出すことで、ボタンやラベルなどの他のコンポーネントをJPanelオブジェクトに自由に追加できます。 paintComponent()メソッドとは このメソッドは、単なる背景色の描画にとどまらず、JPanel上に独自の図形や画像などを描画したい場合に必要となります。paintComponent()メソッドはすでにJPanelクラ