2

ウィンドウで統合ツールバーを使用するように Quaqua を強制する方法がわかりません。

修正を提案している他の投稿を見たすべてを実行しました。ほとんどの人は忘れているようですsetFloatable(false)が、私たちはいつもそれを持っていました。

とにかく、私はそれを簡単な例に要約しました:

import java.awt.BasicStroke;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dialog;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;

import javax.swing.ButtonGroup;
import javax.swing.Icon;
import javax.swing.JDialog;
import javax.swing.JToggleButton;
import javax.swing.JToolBar;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

import ch.randelshofer.quaqua.QuaquaManager;

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

    @Override
    public void run() {
        try {
            UIManager.setLookAndFeel(QuaquaManager.getLookAndFeel());
        } catch (UnsupportedLookAndFeelException e) {
            // Ignore it.
        }

        JToolBar toolBar = new JToolBar();
        toolBar.putClientProperty("Quaqua.ToolBar.style", "title");
        toolBar.setFloatable(false);

        ButtonGroup paneButtonGroup = new ButtonGroup();
        for (int i = 1; i <= 3; i++) {
            JToggleButton button = new JToggleButton("Section " + i);
            button.setIcon(new PlaceholderIcon());
            button.setHorizontalTextPosition(SwingConstants.CENTER);
            button.setVerticalTextPosition(SwingConstants.BOTTOM);
            button.putClientProperty("JComponent.sizeVariant", "small");
            button.putClientProperty("Quaqua.Button.style", "toolBarTab");
            paneButtonGroup.add(button);
            toolBar.add(button);
        }

        JDialog dialog = new JDialog(null, "Preferences", Dialog.ModalityType.MODELESS);
        dialog.setLayout(new BorderLayout());
        dialog.add(toolBar, BorderLayout.PAGE_START);
        dialog.setSize(800, 600);
        dialog.setVisible(true);
    }

    private static class PlaceholderIcon implements Icon {
        @Override
        public void paintIcon(Component c, Graphics g, int x, int y) {
            Graphics2D g2d = (Graphics2D) g;
            g2d.setStroke(new BasicStroke(1.0f, BasicStroke.CAP_SQUARE,
                                          BasicStroke.JOIN_BEVEL, 1.0f,
                                          new float[] {  2.0f, 2.0f }, 1.0f));
            g2d.draw(new Rectangle(x, y, 32, 32));
        }

        @Override
        public int getIconWidth() {
            return 32;
        }

        @Override
        public int getIconHeight() {
            return 32;
        }
    }
}

結果は次のようになります。

私の例のスクリーンショット

これは、トランスミッションがどのように見えるかです:

トランスミッションのスクリーンショット

この例のツールバーには、統一されたツールバーのシェーディングがありません。また、ツールバーをマウスでドラッグしてウィンドウをドラッグすることはできません。これらの問題はどちらも同じ問題に起因していると確信しています.Quaquaは、このツールバーを統合したいことに気付いていません.

apple.awt.brushMetalLookルートペインを に設定してみましたtrue。これには、ウィンドウが常に無効に見えるという悪影響があり、統合されたツールバーとして表示するのに役立ちません。

(( この質問に関連しないその他のその他の視覚的な問題:

  1. テキストのアンチエイリアスは LCD スタイルのアンチエイリアスを使用していません (これは Java 7 のバグであり、既知の回避策はありません)。
  2. エンボス加工はありません (これを修正する方法はわかっていると思いますが、独自の ButtonUI を作成する必要があります)。
  3. アクティブなボタンはより暗い陰影が付けられているだけですが、実際のボタンには少し「押し込まれた」外観があります (奇妙なことに、デフォルトの AquaToggleButtonUI はこれを正しく行っているため、Quaqua がデフォルト。) ))
4

1 に答える 1