0

JButton クラスを拡張して独自のカスタム バージョンを作成しましたが、その上に JLabel を表示する方法がわかりません。通常のボタンでは、JLabel がその上に描画されますが、その動作を再現する方法がわかりません。方法はありますか?

これは、オーバーライドした paintComponent メソッドです。

@Override
protected void paintComponent(Graphics g){
    super.paintComponent(g);
    boolean isSelected = getModel().isPressed();
    Color topColor =  !isSelected ? BUTTON_TOP_GRADIENT : BUTTON_TOP_GRADIENT.darker();
    Color bottomColor =  !isSelected ? BUTTON_BOTTOM_GRADIENT : BUTTON_BOTTOM_GRADIENT.darker();

    Graphics2D g2 = (Graphics2D)g.create();
    RenderingHints qualityHints =
            new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    qualityHints.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
    g2.setRenderingHints(qualityHints);
    g2.setPaint(new GradientPaint(
            new Point(0, 0), 
            topColor, 
            new Point(0, getHeight()), 
            bottomColor));
    g2.fillRoundRect(0, 0, getWidth(), getHeight(), BUTTON_CORNER_RADIUS, BUTTON_CORNER_RADIUS);
    g2.setColor(Color.BLACK);
    g2.dispose();

    // Where I need to draw the JLabel


}
4

2 に答える 2

0

ラベルを描画する代わりにdrawString、Graphics2D のメソッドを使用できます。何かのようなもの:

g2.drawString("Label text", 10, 40);
于 2013-06-01T14:49:21.020 に答える