我寫了一個POS系統(銷售點)的樂趣。 POS系統的典型特徵是具有不同產品背景顏色的按鈕。但我不是說按鈕的圖像後面的背景,我的意思是想在這個隨機圖片我下車谷歌圖片: JButton背景圖片
編輯:請注意,我改變了外觀和感覺系統中的一個
我需要用我的按鈕做這樣的事情。我知道幾種可能的方式:
- 爲我的按鈕創建外觀和感覺?
- 完全覆蓋我的JButtons中的paintComponenet方法(但這是一個非常可憐的方式來做到這一點......並且當我重寫該邊框+文本時不會繪製...顯然是一個糟糕的主意)
- 使用按鈕.setContentAreaFilled(false);,並在按鈕後面放置一個與Button大小相同的JPanel。
我真的不知道如何創建自己的外觀和感覺,這聽起來像是一種痛苦,特別是對於1個按鈕,我聽到了一些關於打破外觀和感覺的東西,理念。第三種方式聽起來似乎合理,而且不是非常困難,但我是什麼方式來做我想做的事情?
現在我創建butons代碼是這樣的:
JButton b = new JButton(text);
b.addActionListener(this);
b.setFont(Main.f);
b.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
buttons.add(b);
return b;
我用這個代碼(大多爲樂趣,而不是實用性)圍繞搞砸:
JButton b = new JButton(text){
public void paintComponent(Graphics g){
super.paintComponent(g);
Color bg = getBackground();
int borderchange = -50;
g.setColor(new Color(
Math.max(0,bg.getRed()+borderchange),
Math.max(bg.getGreen()+borderchange,0),
Math.max(bg.getBlue()+borderchange,0)));
g.fillRect(0,0,getWidth(),getHeight());
g.setColor(getBackground());
int border = 4;
g.fillRect(border,border,getWidth()-border,getHeight()-border);
g.setColor(Color.BLACK);
g.setFont(getFont());
g.drawString(getText(),getWidth()/2,getHeight()/2);
}
};
是的,我想我只是想用JPanel的想法。 – csga5000 2013-02-23 19:46:02
我只會使用JButton,否則您必須實現默認情況下在JButton中實現的所有方法,如果不使用JLabel和Icon(basisc stuff) – mKorbel 2013-02-23 20:48:10