我有一個 JFrame,其中有一個擴展 JPanel 的類,并使用 BorderLayout.CENTER 添加到其中。在 JPanel 子類中的 PaintComponent 方法中,我正在繪制一個與 JFrame 尺寸相同的 fillRoundRect。當我運行它時,roundRect 的底部和右側(cè)部分被切斷。在主課中我有這個: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 中我有:@Overrideprotected void paintComponent(Graphics g) { super.paintComponent(g); g.setColor(Color.BLACK); g.fillRoundRect(0, 0, 500, 500, 50, 50);}我希望 roundRect 完美地適合 JFrame,并且 roundRect 的邊緣接觸 JFrame 的邊緣。
1 回答

炎炎設計
TA貢獻1808條經(jīng)驗 獲得超4個贊
我正在繪制一個與 JFrame 尺寸相同的 fillRoundRect。
您不應該使用與框架相同的尺寸??蚣馨ㄑb飾(標題欄和邊框)。
另外,您不應該對值進行硬編碼。如果調(diào)整框架大小,您的繪畫將如何工作?
相反,您應該使用面板的實際大?。?/p>
g.fillRoundRect(0, 0, getWidth(), getHeight(), 50, 50);
現(xiàn)在,繪畫是根據(jù)面板的大小動態(tài)變化的。
添加回答
舉報
0/150
提交
取消