2

私は次のサンプルコードを書きました:

import org.jdesktop.swingx.*;
import javax.swing.*;
import java.awt.*;

public class TaskPaneExample{
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new TaskPaneExample();
            }});
        }

        public TaskPaneExample() {
            JFrame frame = new JFrame("TaskPane Example 1");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.add(doInit(), BorderLayout.CENTER);
            frame.setLocationRelativeTo(null);
            frame.pack();
            frame.setVisible(true);
        }

        private Component doInit() {
            JXTaskPaneContainer taskpanecontainer = new JXTaskPaneContainer();
            taskpanecontainer.setLayout(new VerticalLayout(2));

            final JXTaskPane taskpane1 = new JXTaskPane(){
                public void setCollapsed(boolean w){
                    super.setCollapsed(w);
                }};
            taskpane1.setTitle("First TaskPane");
            JPanel panel1 = new JPanel();
            panel1.setBackground(Color.red);
            panel1.setSize(100,100);
            taskpane1.add(panel1);
            taskpanecontainer.add(taskpane1);

            JXTaskPane taskpane2 = new JXTaskPane(){
                public void setCollapsed(boolean w){
                    super.setCollapsed(w);
                }};
            taskpane2.setTitle("My Tasks");
            JPanel panel2 = new JPanel();
            panel2.setBackground(Color.blue); 
            panel2.setSize(100,100);
            taskpane2.add(panel2);
            taskpanecontainer.add(taskpane2);
            taskpanecontainer.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));

            return taskpanecontainer;
        }
    }
}

私が必要とするのは2つのことです:

  1. タイトルの bgcolor を変更するにはどうすればよいですか? オプションで完了したと思いtaskpane2.setUI(..)ますが、うまくいきませんでした。
  2. JXTaskPaneと の間の境界Jpanelをゼロに設定する方法は?
4

2 に答える 2

4

当初、JXTaskPane は一種の「固定プロパティ」コンポーネントとして設計されました。これは、対応するネイティブ コンポーネント (当時は WinXP) とまったく同じように見える必要があります。カスタムの外観はサポートされていませんでした。結果として、タイトル/ボーダーの実装は XXTaskPaneUI に深く隠されています。実際には、すべてがボーダーになります。

1) 既に述べたように、一部のプロパティはアプリケーションごとに変更できます。注意: これらは実装の詳細であり、具体的な ui 実装によって変更されるか、サポートされない可能性があります (Nimbus は常にそれらを尊重しない良い候補です。

2) 「ギャップ」は contentPane の境界線であり、独自に設定できます。繰り返しますが、注意してください: updateUI を生き残れない可能性があります (UI デリゲートが無条件にオーバーライドする可能性があります。その場合は、SwingX issuetracker に問題を報告してください)。

((JComponent) taskpane2.getContentPane()).setBorder(BorderFactory.createEmptyBorder());

ところで:これらの panel.setSize はまったく効果がありません-layoutManagersルール;-)

于 2011-04-13T12:57:05.383 に答える
3

タイトルの bgcolour を変更するには、UIManager で背景のグラデーションの開始色と終了色を設定してみてください。

UIManager.put("TaskPane.titleBackgroundGradientStart", Colors.White.color());
UIManager.put("TaskPane.titleBackgroundGradientEnd", Color.GREEN);

また、このための openx jira タスクも見つかりました: SWINGX-731 Support to define the color to JXTaskPane header

于 2011-04-13T10:29:11.920 に答える