3

Nimbus ルック アンド フィールを使用しています。JTabbedPane でタブの背景色と前景色を変更する必要がありますが、JTabbedPane で色が設定されていません。setForeground()、setForegroundAt()、setBackground()、および setBackgroundAt() メソッドを試しましたが、機能しません。これが私のコードです


public class TabbedPaneDemo extends JFrame
{
    TabbedPaneDemo()
    {
        try
        {
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
        }
        catch(Exception ex) {}

setLayout(new BorderLayout()); setBounds(100, 100, 800, 500); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JTabbedPane jt = new JTabbedPane(); jt.addTab("Tab1", new JPanel()); jt.addTab("Tab2", new JPanel()); jt.addTab("Tab3", new JPanel()); jt.addTab("Tab4", new JPanel()); for( int i = 0; i < jt.getComponentCount(); i++) { jt.setForegroundAt(i, Color.RED); jt.setBackgroundAt(i, Color.BLACK); } add(jt); setVisible(true); } public static void main(String args[]) { new TabbedPaneDemo(); }

}

4

6 に答える 6

9

正確な色をどの程度制御したいかによって、いくつかの方法があります。最も簡単な方法は、UIManager のいくつかのプロパティを変更して、Nimbus が他の色を派生させる色を変更することです。私はあなたのコードを少しいじり、UIManager.setLookAndFeel() の呼び出しの後に次のコードを配置すると、例で試みた黒地に赤の外観に近似することがわかりました。

     UIManager.put("nimbusBase", new ColorUIResource(0, 0, 0));
     UIManager.put("textForeground", new ColorUIResource(255, 0, 0));

実験はあなたにお任せします。実験するための詳細については、Nimbus の構成に関する優れた記事がここにあります。「Nimbus UIDefaults Properties List」というタイトルの彼のリンクを必ず確認してください。色を好きなように調整するだけでなく、カスタム ペイントを行う Painter クラスを実装するなど、厄介なことを始める必要があります。

于 2010-03-24T23:38:33.427 に答える
2

JTabbedPane は、コンポーネントを追加すると機能します。たとえば、5 つの JPanel を追加するとタブが表示されます。

于 2010-03-15T07:17:01.620 に答える
2

私の英語でごめんなさい。

私はこの問題を2日間解決しようとしました..「回避策」解決があります。

タブ コンポーネントを設定する必要があります。次に、このコンポーネントの色を設定します。

/*
  ...
  Setting LAF Nimbus
  ...
*/

JTabbedPane tp = new JTabbedPane();

/*
   ...
   add tabs in TabbedPane
   ...
*/

次に、指定されたタブに対して次のことを行う必要があります。

        JLabel title = new JLabel(tp.getTitleAt(tabIndex));
        title.setForeground(Color.RED);
        tp.setTabComponentAt(tabIndex, title);

ああ、神様!!その仕事!

于 2012-01-20T09:39:22.450 に答える
1

実際のコンテンツを変更したい場合、タブ付きペインの 2 つの便利な方法があります:setForegroundAtsetBackgroundAt. すべてのタブをループして、これらを呼び出すことができます。

for (int i = 0; i < pane.getTabCount(); i++) {
    pane.setForegroundAt(i, foregroundColor);
    pane.setBackgroundAt(i, backgroundColor);
}

getComponentAt同様に、次のものも使用できます。

for (int i = 0; i < pane.getTabCount(); i++) {
    pane.getComponentAt(i).setForeground(foregroundColor);
    pane.getComponentAt(i).setBackground(backgroundColor);
}

後者のアプローチはより柔軟です。後でこのようなコードを使用して、すべてのコンポーネントに対してより複雑なことを行うことができます。

于 2010-03-15T07:27:56.833 に答える
1

実際にはそうではありません

new JTabbedPane().setUI(new YourUI());

次に、シンプルな UI を作成します

public class YourUI extends BasicTabbedPaneUI{

.....

private class ScrollableTabPanel extends JPanel implements UIResource {
public ScrollableTabPanel() {
    setLayout(null);
}

public void paintComponent(Graphics g) {

super.paintComponent(g);

g.setColor(Color.red);
g.fillRect(tabPane.getBounds());            

        }
    }

....

}

ヤン・カジャムル

それがどのように見えるべきかがあります(私のUI実装の別のアドオンであるQuadSplineタブとクローズバーを気にしないでください)、ここでの私の評判は何もないので、画像へのリンクがあります

http://a5.sphotos.ak.fbcdn.net/hphotos-ak-ash3/166028_2974620064454_896181702_n.jpg

于 2012-06-30T15:24:43.017 に答える