Я не согласен с вами! На самом деле вы можете использовать NetBeans для создания такого GUI,
Это просто тоже, у вас есть много вариантов для работы! Те, которые я лично использую:
1) Создайте графику с помощью программного обеспечения для рисования и установите для компонента значение Icon . Я использую для процесса проектирования InkScape , но любое программное обеспечение должно сработать. Вы должны быть осторожно осторожны в этом процессе, потому что вы не можете изменить размеры изображений в NetBeans (ну, я никогда не пробовал).
2) расширить UI класс (Пример: открытый класс CustomButtonUI extension BasicButtonUI) и переопределить метод нарисовать , затем использовать функцию setUI (componentName.setUI (new CustomButtonUI);)
Это пример кода:
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import javax.swing.AbstractButton;
import javax.swing.JComponent;
import javax.swing.plaf.basic.BasicButtonUI;
/**
*
* @author Ionut Cicio
*/
public class CustomButton extends BasicButtonUI{
int borderThickness, edgeRoundness;
@Override
public void paint(Graphics g, JComponent c) {
Graphics2D g2 = (Graphics2D)g;
g2.setColor(c.getBackground());
borderThickness = 2;
edgeRoundness = 20;
g2.setColor(c.getForeground());
g2.fillRoundRect(0, 0, c.getWidth(), c.getHeight(), edgeRoundness+5, edgeRoundness+5);
g2.drawRoundRect(0, 0, c.getWidth(), c.getHeight(), edgeRoundness+5, edgeRoundness+5);
//g2.fillRect(0, 0, c.getWidth(), c.getHeight());
//g2.drawRect(0, 0, c.getWidth(), c.getHeight());
g2.setColor(c.getBackground());
g2.fillRoundRect(borderThickness, borderThickness, c.getWidth()-(int)(borderThickness*2.5), c.getHeight()-(int)(borderThickness*2.5), edgeRoundness, edgeRoundness);
g2.drawRoundRect(borderThickness, borderThickness, c.getWidth()-(int)(borderThickness*2.5), c.getHeight()-(int)(borderThickness*2.5), edgeRoundness, edgeRoundness);
super.paint(g, c);
}
@Override
protected void paintFocus(Graphics g, AbstractButton b, Rectangle viewRect, Rectangle textRect, Rectangle iconRect) {
}
}
Всегда используется оба метода вместе , и это дает вам действительно большое преимущество при работе с анимациями !
Для некоторых типов UI как BasicTextFieldUI понимание того, как работает рисование, довольно сложно, но все же понятно.