2014-10-07 56 views
1

我只是想一個普通的JButton,如下所示:在按鈕的地方的東西?這叫什麼?

JButton buttonWCRoss = new JButton("Button out"); 

但隨着在按鈕和文本「拍攝按鈕」的圖像。我該如何去做?

謝謝

+3

會禁用該按鈕是可以接受的嗎?我有一種感覺,你將會得到的答案比你想要的要複雜得多。 – Jon 2014-10-07 00:50:32

回答

0

有一個.setText(「」)方法,你可以用它來改變按鈕的頂部的文本,如果這就是你要問什麼。另外還有.setFont(新字體(「Arial」,Font.Plain,40))作爲例子,改變按鈕內的字體。

2

你可以擴展JButton

public class CrossButton extends JButton { 

    @Override 
    public void paintComponent(Graphics g) { 
     super.paintComponent(g); 
     if(!isEnabled()) { 
      g.setColor(Color.BLACK); 
      g.drawLine(0, 0, getWidth(), getHeight()); 
      g.drawLine(0, getHeight(), getWidth(), 0); 
     } 
    } 
} 

然後使用setEnabled(boolean)畫出十字。我假設你想要刪除禁用的按鈕。

未經測試,但應該工作。經過測試和工作。

+0

我測試過它,但只顯示一個空白按鈕。我該如何放置文本,「」交叉按鈕「」。在我的Driver類中,做到了這一點:JPanel jp = new JPanel(); \t \t CrossButton cb = new CrossButton(); \t \t \t \t jp.add(cb); \t \t add(jp); \t \t setVisible(true); – 2014-10-07 01:47:54

+0

與'JButton'相同的方法:'cp.setText(「Crossed Out Button」)'。 – IchBinKeinBaum 2014-10-07 02:13:24

+0

在這種情況下你的意思是cb嗎? – 2014-10-07 02:27:19

3

我將擴展JButton,並覆蓋其的paintComponent方法,在你的十字架繪圖:

JButton button = new JButton("Cross Out Button") { 
    @Override 
    protected void paintComponent(Graphics g) { 
     super.paintComponent(g); 
     Graphics2D g2 = (Graphics2D)g; 
     g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, 
       RenderingHints.VALUE_ANTIALIAS_ON); 
     g2.setColor(new Color(255, 0, 0, 150)); 
     g2.setStroke(CROSS_STROKE); 
     int x1 = 4; 
     int y1 = x1; 
     int x2 = getWidth() - x1; 
     int y2 = getHeight() - y1; 

     g2.drawLine(x1, y1, x2, y2); 
     g2.drawLine(x1, y2, x2, y1); 
    } 
    }; 

您不妨用半透明的顏色(如我之前所做的那樣),使文本顯示了通過。不要忘記設置RenderingHints來擺脫鋸齒。

CROSS_STROKE是一個常數,我在我的測試程序中聲明,一個的BasicStroke對象:

protected static final Stroke CROSS_STROKE = new BasicStroke(5, 
        BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER); 
+0

會不會有一種擴展JButton的方法,並且這樣做呢?如果是的話,你可以表明你是否不介意?因爲我學到了這種方法並想申請它 – 2014-10-07 01:19:50

+0

嗯,那就是他所做的。他創建了一個[匿名類](http://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html),這意味着他擴展了'JButton',但沒有給這個新類命名(可能是因爲它只是一個例子)。對於一個完整的(非匿名)課程,請參閱我的答案。 – IchBinKeinBaum 2014-10-07 01:23:27

+0

@Hovercraft Full Of Eels什麼是CROSS_STROKE應該是?它應該如何申報? – 2014-10-07 01:39:00

相關問題