1
首先,是的,我知道我是新手,這是我第一次嘗試製作自定義組件。自定義按鈕大小不正確?
好了,在我的項目,我想做出一個自定義的按鈕做了三兩件事:
- 繪製背景
- 獲取所選應用程序的圖標
- 繪製應用程序的按鈕中的名稱。
它可以做所有這三個的,除了按鈕微小:
的圖標的Jar應用程序和名稱爲「試驗中的應用」。
這是我班上的paintComponent(圖形)方法,AppButton:
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D antiAlias = (Graphics2D) g;
antiAlias.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g.setColor(Color.blue);
//g.fillRoundRect(x, y, width, height, arcWidth, arcHeight);
g.fillRoundRect(this.getX(), this.getY(), this.getWidth(), this.getHeight() - 25, 20, 20);
g.setColor(Color.red);
FontMetrics metrics = g.getFontMetrics();
int widthOfAppName = metrics.stringWidth(this.appName);
g.drawString(this.appName, this.getWidth()/2 - (widthOfAppName/2), this.getHeight() - 10);
File refrenceFile = new File(this.appURL);
try {
if (refrenceFile.exists()) {
ShellFolder sf = ShellFolder.getShellFolder(refrenceFile);
this.appIcon = new ImageIcon(sf.getIcon(true));
g.drawImage(this.appIcon.getImage(), this.getWidth()/2 - (this.appIcon.getIconWidth()/2),
this.getHeight()/2 - (this.appIcon.getIconHeight()/2), JLaunch.theFrame);
//Draw the centered Image
} else {
ImageIcon noImageFound = getNoImageAvailable();
//g.drawImage(img, x, y, observer)
g.drawImage(noImageFound.getImage(), this.getWidth()/2 - (noImageFound.getIconWidth()/2),
this.getHeight()/2 - (noImageFound.getIconHeight()/2), JLaunch.theFrame);
//Draw the centered Image
}
} catch (Exception e) {
e.printStackTrace();
}
}
在一個側面說明,如果任何人有關於自定義Swing組件有很好的瞭解,你能不能也請點我一個很好的教程還是像你一樣學習它的方法?
> _ <謝謝...我好蠢... – mattbdean
歡迎光臨。而你的代碼可能比我上學的人中的75%還要好。繼續! –