OLá! Eu não sei como criar um botão em forma triângular.Sou novo em java . Alguém pode daralgum exemplo simples ?
Estende a classe JButton
, sobrescreve os métodos paintComponent
e paintBorder
para desenhar o botão em forma de triângulo e sobrescreve o método contains
para retornar true
somente quando a coordenada i formada estiver dentro do triângulo.
Para quem está iniciando, isso definitivamente não é simples.
1 curtida
OLha eu começei fazendo assim
btnCima.paintComponents(new Graphics() {
@Override
public void translate(int x, int y) {
// TODO Auto-generated method stub
}
@Override
public void setXORMode(Color c1) {
// TODO Auto-generated method stub
}
@Override
public void setPaintMode() {
// TODO Auto-generated method stub
}
@Override
public void setFont(Font font) {
// TODO Auto-generated method stub
}
@Override
public void setColor(Color c) {
// TODO Auto-generated method stub
}
@Override
public void setClip(int x, int y, int width, int height) {
// TODO Auto-generated method stub
}
@Override
public void setClip(Shape clip) {
// TODO Auto-generated method stub
}
@Override
public FontMetrics getFontMetrics(Font f) {
// TODO Auto-generated method stub
return null;
}
@Override
public Font getFont() {
// TODO Auto-generated method stub
return null;
}
@Override
public Color getColor() {
// TODO Auto-generated method stub
return null;
}
@Override
public Rectangle getClipBounds() {
// TODO Auto-generated method stub
return null;
}
@Override
public Shape getClip() {
// TODO Auto-generated method stub
return null;
}
@Override
public void fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) {
// TODO Auto-generated method stub
}
@Override
public void fillRect(int x, int y, int width, int height) {
// TODO Auto-generated method stub
}
@Override
public void fillPolygon(int[] xPoints, int[] yPoints, int nPoints) {
// TODO Auto-generated method stub
}
@Override
public void fillOval(int x, int y, int width, int height) {
// TODO Auto-generated method stub
}
@Override
public void fillArc(int x, int y, int width, int height, int startAngle, int arcAngle) {
// TODO Auto-generated method stub
}
@Override
public void drawString(AttributedCharacterIterator iterator, int x, int y) {
// TODO Auto-generated method stub
}
@Override
public void drawString(String str, int x, int y) {
// TODO Auto-generated method stub
}
@Override
public void drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) {
// TODO Auto-generated method stub
}
@Override
public void drawPolyline(int[] xPoints, int[] yPoints, int nPoints) {
// TODO Auto-generated method stub
}
@Override
public void drawPolygon(int[] xPoints, int[] yPoints, int nPoints) {
// TODO Auto-generated method stub
}
@Override
public void drawOval(int x, int y, int width, int height) {
// TODO Auto-generated method stub
}
@Override
public void drawLine(int x1, int y1, int x2, int y2) {
// TODO Auto-generated method stub
}
@Override
public boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2,
Color bgcolor, ImageObserver observer) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2,
ImageObserver observer) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean drawImage(Image img, int x, int y, int width, int height, Color bgcolor, ImageObserver observer) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean drawImage(Image img, int x, int y, int width, int height, ImageObserver observer) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean drawImage(Image img, int x, int y, Color bgcolor, ImageObserver observer) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean drawImage(Image img, int x, int y, ImageObserver observer) {
// TODO Auto-generated method stub
return false;
}
@Override
public void drawArc(int x, int y, int width, int height, int startAngle, int arcAngle) {
// TODO Auto-generated method stub
}
@Override
public void dispose() {
// TODO Auto-generated method stub
}
@Override
public Graphics create() {
// TODO Auto-generated method stub
return null;
}
@Override
public void copyArea(int x, int y, int width, int height, int dx, int dy) {
// TODO Auto-generated method stub
}
@Override
public void clipRect(int x, int y, int width, int height) {
// TODO Auto-generated method stub
}
@Override
public void clearRect(int x, int y, int width, int height) {
// TODO Auto-generated method stub
}
});
Você pegou um botão e chamou o método paintComponents
passando uma classe anônima que estende Graphics
.
Está errado!
Você vai criar sua própria classe que estende JButton
, por exemplo class TrangleButton extends JButton
, em seguinda vai sobrescrever os seguintes métodos:
-
paintComponent
(no singular) paintBorder
contains
Um esqueleto pra você começar:
import java.awt.Graphics;
import javax.swing.JButton;
public class TriangleButton extends JButton {
@Override
protected void paintComponent(Graphics g) {
// aqui você vai usar o objeto g pra desenhar o interior do seu botão
}
@Override
protected void paintBorder(Graphics g) {
// aqui você vai usar o objeto g pra desenhar a borda do seu botão
}
@Override
public boolean contains(int x, int y) {
// aqui você vai verificar se a coordenada x,y informada está dentro do seu botão
// se estiver, return true, senão
return false;
}
}