Прежде всего, да, я знаю, что я новичок, и это моя первая попытка создать пользовательский компонент.Пользовательская кнопка неправильного размера?
Итак, в моем проекте, я пытаюсь сделать пользовательскую кнопку, которая делает три вещи:
- Нарисовать фон
- Получить иконку выбранного приложения
- Изобразите приложения имя в кнопке.
Он может сделать все три из них, за исключением того, что кнопка крошечное:
Значок приложения Jar и название "Test Application".
Это метод paintComponent (Graphics) в моем классе, 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% людей, с которыми я иду в школу. Продолжать! –