我只是想一個普通的JButton,如下所示:在按鈕的地方的東西?這叫什麼?
JButton buttonWCRoss = new JButton("Button out");
但隨着在按鈕和文本「拍攝按鈕」的圖像。我該如何去做?
謝謝
我只是想一個普通的JButton,如下所示:在按鈕的地方的東西?這叫什麼?
JButton buttonWCRoss = new JButton("Button out");
但隨着在按鈕和文本「拍攝按鈕」的圖像。我該如何去做?
謝謝
有一個.setText(「」)方法,你可以用它來改變按鈕的頂部的文本,如果這就是你要問什麼。另外還有.setFont(新字體(「Arial」,Font.Plain,40))作爲例子,改變按鈕內的字體。
你可以擴展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)
畫出十字。我假設你想要刪除禁用的按鈕。
未經測試,但應該工作。經過測試和工作。
我測試過它,但只顯示一個空白按鈕。我該如何放置文本,「」交叉按鈕「」。在我的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
與'JButton'相同的方法:'cp.setText(「Crossed Out Button」)'。 – IchBinKeinBaum 2014-10-07 02:13:24
在這種情況下你的意思是cb嗎? – 2014-10-07 02:27:19
我將擴展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);
會不會有一種擴展JButton的方法,並且這樣做呢?如果是的話,你可以表明你是否不介意?因爲我學到了這種方法並想申請它 – 2014-10-07 01:19:50
嗯,那就是他所做的。他創建了一個[匿名類](http://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html),這意味着他擴展了'JButton',但沒有給這個新類命名(可能是因爲它只是一個例子)。對於一個完整的(非匿名)課程,請參閱我的答案。 – IchBinKeinBaum 2014-10-07 01:23:27
@Hovercraft Full Of Eels什麼是CROSS_STROKE應該是?它應該如何申報? – 2014-10-07 01:39:00
閱讀從Swing教程中的部分上How to Decorate Components With the JLayer Class。通過這個課程,您可以在組件上進行任何類型的自定義繪畫,而不會擴展組件。
是的,這可能是最好的解決方案! – 2014-10-07 01:23:58
會禁用該按鈕是可以接受的嗎?我有一種感覺,你將會得到的答案比你想要的要複雜得多。 – Jon 2014-10-07 00:50:32