1

どちらかをJTabbedPane使用して背景色を変更する例をたくさん見つけましたsetBackgroundAt()UIManager.put("JTabbedPane...")

onclickただし、チェックボックスを選択すると背景色が緑に変わり、選択を解除するとデフォルトに戻るイベントをチェックボックスに作成したいと考えています。

上記の方法を使用してその作業を行うことができませんでした。

何か案は?

PS:setForgroundAt()何らかの理由で背景ではなく、使用して前景色を変更できます

4

3 に答える 3

4

LAF は、一部の (ビジュアルのみ? 不明) JComponent プロパティのカスタム設定を自由に無視できます

このプロパティを尊重するかどうかはルック アンド フィール次第であり、無視することを選択する人もいます。

したがって、結果は LAF に大きく依存します (Nimbus/Win ではなく、Metal および Motif の Workforme) 簡単で安全な方法はありません (実際のオプションではない ui デリゲートの微調整を除いて)

于 2012-10-26T14:23:06.707 に答える
2

を上書きしてpaintComponent、そこで色を変更します。

@Override
public void paintComponent(Graphics g) {
    g.setColor(new Color(color));
    g.fillRect(0, 0, getWidth(), getHeight());
于 2012-10-26T11:22:04.170 に答える
0

各タブ パネルの背景色/前景色を設定した後、次のことを試してください。これにより、上部のタブが JTabbedPane (myTabs) のパネルと同じ色になります。これはNimbusでうまくいきます。

for (int c = 0; c < myTabs.getComponentCount(); ++c)
{
  myTabs.setBackgroundAt(c, myTabs.getComponentAt(c).getBackground());
  myTabs.setForegroundAt(c, myTabs.getComponentAt(c).getForeground());
}

myTabs.setOpaque(true);
myTabs.setUI(new BasicTabbedPaneUI()); 
于 2013-05-28T08:46:46.500 に答える