對於我的項目,我需要創建可自定義的按鈕。除了我有問題,我不知道如何解決它。 我有一個我的按鈕的背景圖片,我希望它是可擴展的X和Y根據文本將在沒有損失的質量。 你有什麼想法嗎?Java中的設計按鈕(如CSS)
1
A
回答
5
擺有一個可插拔的外觀&感覺它允許改變其部件的由ComponentUI
的方式出現(在這種情況下:一個ButtonUI
)。
例子:
class StyledButtonUI extends BasicButtonUI {
@Override
public void installUI (JComponent c) {
super.installUI(c);
AbstractButton button = (AbstractButton) c;
button.setOpaque(false);
button.setBorder(new EmptyBorder(5, 15, 5, 15));
}
@Override
public void paint (Graphics g, JComponent c) {
AbstractButton b = (AbstractButton) c;
paintBackground(g, b, b.getModel().isPressed() ? 2 : 0);
super.paint(g, c);
}
private void paintBackground (Graphics g, JComponent c, int yOffset) {
Dimension size = c.getSize();
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g.setColor(c.getBackground().darker());
g.fillRoundRect(0, yOffset, size.width, size.height - yOffset, 10, 10);
g.setColor(c.getBackground());
g.fillRoundRect(0, yOffset, size.width, size.height + yOffset - 5, 10, 10);
}
}
測試主要方法:
public static void main (String[] args) {
JFrame f = new JFrame("Button UI Test");
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
JPanel p = new JPanel();
p.setBackground(Color.white);
f.setContentPane(p);
p.setLayout(new FlowLayout(5, 5));
p.setBorder(new EmptyBorder(10, 10, 10, 10));
for (int i = 1; i <= 5; i++) {
final JButton button = new JButton("Button #" + i);
button.setFont(new Font("Calibri", Font.PLAIN, 14));
button.setBackground(new Color(0x2dce98));
button.setForeground(Color.white);
// customize the button with your own look
button.setUI(new StyledButtonUI());
p.add(button);
}
f.pack();
f.setLocation(500, 500);
f.setVisible(true);
}
+1
非常感謝,我不知道這是可能的。你以最簡單的方式解決了我的問題。再一次,謝謝:) 通過利弊,我怎麼能做更詳細的同樣的事情這樣的[設計](http://speckycdn.sdm.netdna-cdn.com/wp-content/uploads/2012/ 01/preview640.jpg)? – TheNawaKer
1
您可以縮放圖像,並創建一個ImageIcon。事情是這樣的:
ImageIcon icon = new ImageIcon("img.png");
Image scaledImg = icon.getImage().getScaledInstance(newWidth, newHeight, java.awt.Image.SCALE_SMOOTH);
icon = new ImageIcon(scaledImg);
JButton button = new JButton(icon);
button.setHorizontalTextPosition(JButton.CENTER);
button.setVerticalTextPosition(JButton.CENTER);
相關問題
- 1. 使用css設計按鈕
- 2. 使用CSS的HTML按鈕設計?
- 3. 設計按鈕
- 4. 設計按鈕
- 5. 如何設計按鈕
- 6. 如何設計IBAction按鈕
- 7. iOS按鈕設計
- 8. wxPython,按鈕設計
- 9. 在GWT中使用CSS設計我所有的按鈕
- 10. 更改按鈕的設計
- 11. mdpi的Android設計按鈕
- 12. CSS /網頁設計:如何創建一個斜/雙面按鈕
- 13. CSS按鈕未設置$ _POST
- 14. 如何設計我的android 2.3按鈕?
- 15. 如何設計QWizard的按鈕區域?
- 16. 如何設計這樣的按鈕?
- 17. 按鈕計數器Java
- 18. GWT:設置按鈕/設計按鈕的最佳方法?
- 19. 使用CSS/Css3設計html按鈕的樣式?
- 20. 我用CSS設計的這個按鈕不會樣式
- 21. 使用CSS和上傳按鈕的功能設計樣式
- 22. 文本對齊設計和圖標的按鈕用CSS
- 23. 變更按鈕的由表設計成具有CSS
- 24. 在Java中設置按鈕的位置
- 25. GWT設計一個按鈕
- 26. 按鈕設計問題
- 27. 設計XML按鈕Android
- 28. 編輯按鈕設計
- 29. 使用HTML設計按鈕
- 30. Sass ::單選按鈕設計
你應該注意一下的Java FX CSS文檔http://docs.oracle。 com/javase/8/javafx/api/javafx/scene/doc-files/cssref.html – diegoaguilar