[英]How do I right align a search bar in a Java SWT Unified ToolBar (OS X)
[英]How do I get a unified toolbar in Quaqua?
我不知道如何強迫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;
}
}
}
結果看起來像這樣:
這是Transmission的樣子:
我們的示例工具欄缺少統一的工具欄陰影。 同樣,您不能用鼠標拖動工具欄來拖動窗口。 我確定這兩個問題都源於同一個問題,Quaqua某種程度上沒有意識到我希望此工具欄統一。
我嘗試將根窗格上的apple.awt.brushMetalLook
設置為true
。 這具有使窗口始終處於禁用狀態的不利影響,並且無助於將窗口顯示為統一的工具欄。
((與該問題無關的其他視覺問題:
這是一個非常棘手的解決方案,它依賴於禁用Quaqua的某些位來使根窗格執行正確的操作,因為我發現默認的Aqua外觀確實可以正常工作。
奇怪的事情:
。
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Arrays;
import java.util.HashSet;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JToolBar;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.WindowConstants;
import ch.randelshofer.quaqua.QuaquaManager;
public class SheetTest implements Runnable {
public static void main(String[] args) {
SwingUtilities.invokeLater(new SheetTest());
}
@Override
public void run() {
try {
QuaquaManager.setExcludedUIs(new HashSet<>(Arrays.<String>asList(
"RootPane"
)));
UIManager.setLookAndFeel(QuaquaManager.getLookAndFeel());
} catch (Exception ignored) {}
JButton button = new JButton("Sheet me!");
JToolBar toolBar = new JToolBar();
JScrollPane content = new JScrollPane();
JFrame frame = new JFrame();
toolBar.setFloatable(false);
toolBar.setOpaque(false);
toolBar.add(button);
frame.setLayout(new BorderLayout());
frame.add(toolBar, BorderLayout.PAGE_START);
frame.add(content, BorderLayout.CENTER);
// Under current Aqua L&F, this doesn't actually look like brushed metal.
// It looks like normal window titles.
frame.getRootPane().putClientProperty("apple.awt.brushMetalLook", true);
frame.setSize(400, 300);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.