我想改變JButton
漸變色, 我發現這一點,http://java2everyone.blogspot.com/2009/01/set-jbutton-gradient-color.html,但我想改變梯度只有一個按鈕,並非所有的按鈕更改JButton的漸變色,但只有一個按鈕,並非所有
12
A
回答
18
你可以覆蓋JButton
實例的paintComponent方法和與實施Paint接口下面類中的一個繪製其Graphics對象:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
public final class JGradientButtonDemo {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
createAndShowGUI();
}
});
}
private static void createAndShowGUI() {
final JFrame frame = new JFrame("Gradient JButton Demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(new FlowLayout());
frame.add(JGradientButton.newInstance());
frame.setSize(new Dimension(300, 150)); // used for demonstration
//frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
private static class JGradientButton extends JButton {
private JGradientButton() {
super("Gradient Button");
setContentAreaFilled(false);
setFocusPainted(false); // used for demonstration
}
@Override
protected void paintComponent(Graphics g) {
final Graphics2D g2 = (Graphics2D) g.create();
g2.setPaint(new GradientPaint(
new Point(0, 0),
Color.WHITE,
new Point(0, getHeight()),
Color.PINK.darker()));
g2.fillRect(0, 0, getWidth(), getHeight());
g2.dispose();
super.paintComponent(g);
}
public static JGradientButton newInstance() {
return new JGradientButton();
}
}
}
5
在麥格理的回答有點起色:
private static final class JGradientButton extends JButton{
private JGradientButton(String text){
super(text);
setContentAreaFilled(false);
}
@Override
protected void paintComponent(Graphics g){
Graphics2D g2 = (Graphics2D)g.create();
g2.setPaint(new GradientPaint(
new Point(0, 0),
getBackground(),
new Point(0, getHeight()/3),
Color.WHITE));
g2.fillRect(0, 0, getWidth(), getHeight()/3);
g2.setPaint(new GradientPaint(
new Point(0, getHeight()/3),
Color.WHITE,
new Point(0, getHeight()),
getBackground()));
g2.fillRect(0, getHeight()/3, getWidth(), getHeight());
g2.dispose();
super.paintComponent(g);
}
}
+0
找到最好的解決辦法一個將如何實現這一個按鈕,已經是一個圖形用戶界面的一部分?如果我將其添加到按鈕,我是否需要更改動作偵聽器?那可能嗎?或者,更好的問題;首先要問一個合理的問題? –
+0
如果一個GUI已經有一個按鈕,必須有一些代碼來創建該按鈕(JButton b = new JButton(「whatever」))。要替換默認按鈕,您需要改爲創建一個JGradientButton(JButton b = new JGradientButton(「whatever」))並將背景顏色設置爲您喜歡的(b.setBackground(.. somecolor ...))。 GUI中處理按鈕的其餘代碼應保持不變 – luca
相關問題
- 1. ToggleButtonBar - 如何更改只有一個按鈕的顏色
- 2. 所有按鈕的一般CSS,但改變每個基於ID的顏色
- 3. 更改所選jbutton的邊框顏色而不命名按鈕
- 4. 更改所有單選按鈕,我的代碼只更改第一個?
- 5. android上的漸變按鈕顏色更改
- 6. 逐漸改變背景顏色,所有的顏色不斷
- 7. 你可以有一個漸變作爲一個按鈕tintColor?
- 8. 更改不透明度的一個按鈕改變他們所有人
- 9. Android:按下按鈕時改變列表視圖中所有按鈕的顏色
- 10. $ _ POST變量只返回值某些領域,但並非所有
- 11. 點擊按鈕顏色沒有改變
- 12. Zip_choropleth R中只有一個顏色漸變
- 13. 沒有漸變的Flex按鈕
- 14. 具有漸變邊框的CSS按鈕
- 15. 按鈕陣列,只有一個按鈕,當點擊時改變它的文本
- 16. 如何更改所有按鈕的背景顏色?
- 17. 更改java中的所有按鈕顏色
- 18. 更改點擊上所有按鈕的顏色
- 19. 如何更改MahApps中所有命令按鈕的前景色
- 20. Silverlight:更改應用程序中所有按鈕的顏色
- 21. 更改所有tabbedpane面板java swing的顏色按鈕操作
- 22. 漸變色在Android的所有版本中都不顯示按鈕背景
- 23. 使用不同的純色線,漸變色停止但沒有漸變的solidcolorbrush
- 24. 如何更改所有「購買」按鈕的網址到一個
- 25. 一個按鈕改變多種顏色
- 26. 使所有漸變爲白色漸變爲透明
- 27. UIButton圖像只改變一個按鈕
- 28. 使用卡布局更改窗格只有一個按鈕
- 29. JButton:更改按鈕的位置
- 30. 只有所有按鈕的MouseEnter事件
因爲應該是L&F敏感,但合租不錯+1 – mKorbel
我已經對SO –