RoundRect 不适合 JFrame

我有一个 JFrame,其中有一个扩展 JPanel 的类,并使用 BorderLayout.CENTER 添加到其中。在 JPanel 子类中的 PaintComponent 方法中,我正在绘制一个与 JFrame 尺寸相同的 fillRoundRect。当我运行它时,roundRect 的底部和右侧部分被切断。


在主课中我有这个:


SwingUtilities.invokeLater(() -> {

    JFrame frame = new JFrame();

    PlayingField playingField = new PlayingField(); // subclass of JPanel

    frame.add(playingField, BorderLayout.CENTER);

    frame.setSize(500, 500);

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    frame.setVisible(true);

});

在 PlayingField 中我有:


@Override

protected void paintComponent(Graphics g) {

    super.paintComponent(g);

    g.setColor(Color.BLACK);

    g.fillRoundRect(0, 0, 500, 500, 50, 50);

}

我希望 roundRect 完美地适合 JFrame,并且 roundRect 的边缘接触 JFrame 的边缘。


隔江千里
浏览 83回答 1
1回答

炎炎设计

我正在绘制一个与 JFrame 尺寸相同的 fillRoundRect。您不应该使用与框架相同的尺寸。框架包括装饰(标题栏和边框)。另外,您不应该对值进行硬编码。如果调整框架大小,您的绘画将如何工作?相反,您应该使用面板的实际大小:g.fillRoundRect(0, 0, getWidth(), getHeight(), 50, 50);现在,绘画是根据面板的大小动态变化的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java