Только 1 угол округляется, когда я вызываю fillRoundRect()

При запуске этого кода:

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import javax.swing.JButton;
import javax.swing.JLabel;

public class CustomButton extends JButton {

    int width = 100;
    int height = 50;
    int radius = 10;
    JLabel lab;

    @Override
    protected void paintComponent(Graphics g) {
        Graphics2D g2 = (Graphics2D) g;

        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                RenderingHints.VALUE_ANTIALIAS_ON);
        g2.setColor(Color.ORANGE);
        g2.fillRoundRect(0, 0, width, height, radius, radius);
        
        g2.dispose();
        super.paintComponent(g2);
        super.paintComponent(g);

    }

}

И мой другой класс:

package custom.frame;

import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class CustomFrame {

    public static void main(String[] args) {
        JFrame f = new JFrame();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setLayout(new FlowLayout());
        f.setSize(500,500);
        f.setLocationRelativeTo(null);
        
        JPanel pane = new JPanel();
        pane.setBounds(0,0,500,500);
        
        CustomButton btn = new CustomButton();
        pane.add(btn);
        f.add(btn);
        f.setVisible(true);
        
    }

}

Я получаю обычный прямоугольник только с 1 закругленной стороной. Пожалуйста, смотрите изображение ниже.

введите здесь описание изображения

Это ожидаемая функция? Если нет, то как я могу это исправить.

Редактировать

Я могу получить 2 закругленных угла, если сделаю так: g2.fillRoundRect(0, 0, 50, 50, 7, 7);


person Fouroh3    schedule 26.01.2014    source источник


Ответы (1)


Единственное, о чем я действительно могу думать, так это о том, что окно, содержащее прямоугольник, слишком маленькое и отрезает три других угла, но это кажется маловероятным.

person John Smith    schedule 26.01.2014
comment
Мой JFrame пытаюсь в нем отобразить 500 х 500 - person Fouroh3; 26.01.2014
comment
Ok. Охватывает ли JPanel или что-то еще, что вы используете для отображения прямоугольника, весь JFrame? - person John Smith; 26.01.2014
comment
Да. Позвольте мне добавить больше кода и посмотреть, поможет ли это. - person Fouroh3; 26.01.2014
comment
Хорошо, оказывается, ты был прав. Я использовал FlowLayout, который обрезал часть формы. Когда я изменил макет на нулевой, он сработал. - person Fouroh3; 26.01.2014
comment
Да, это я тоже понял. Изображение рисуется поверх того, что я считаю размером кнопки по умолчанию, но этот размер по умолчанию слишком мал для прямоугольника. Посмотрите, можете ли вы изменить размер кнопки. - person John Smith; 26.01.2014