Java 如何在JPanel中绘制矩形
我试图在JFrame中的JPanel中绘制一个矩形。我想使用paintComponents(Graphics g)方法并覆盖它,但由于某些原因,矩形没有像我希望的那样出现在JPanel中。任何帮助都将不胜感激Java 如何在JPanel中绘制矩形,java,swing,user-interface,draw,paintcomponent,Java,Swing,User Interface,Draw,Paintcomponent,我试图在JFrame中的JPanel中绘制一个矩形。我想使用paintComponents(Graphics g)方法并覆盖它,但由于某些原因,矩形没有像我希望的那样出现在JPanel中。任何帮助都将不胜感激 public class RectangleFrame extends JFrame implements ActionListener { JPanel buttonPanel; JButton saveImage; JButton clearImage;
public class RectangleFrame extends JFrame implements ActionListener {
JPanel buttonPanel;
JButton saveImage;
JButton clearImage;
JCheckBox intersections;
JCheckBox union;
JPanel drawingArea;
public RectangleFrame()
{
super();
setTitle("Rectangles");
setSize(600,600);
setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
buttonPanel = new JPanel();
buttonPanel.setBorder(BorderFactory.createLineBorder(Color.black));
this.add(buttonPanel, BorderLayout.SOUTH);
intersections = new JCheckBox("Draw Intersections");
buttonPanel.add(intersections);
union = new JCheckBox("Draw Union");
buttonPanel.add(union);
saveImage = new JButton("Save Image");
saveImage.setMargin(new Insets(0,0,0,0));
buttonPanel.add(saveImage);
clearImage = new JButton("Clear Image");
clearImage.setMargin(new Insets(0,0,0,0));
buttonPanel.add(clearImage);
drawingArea = new JPanel();
drawingArea.setBorder(BorderFactory.createLineBorder(Color.blue));
this.add(drawingArea, BorderLayout.CENTER);
}
}
class RectanglePanel extends JPanel
{
public RectanglePanel()
{
super();
}
@Override
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.setColor(Color.BLUE);
g.fillRect(25,25,100,30);
}
}
以下是我在单独类中的主要方法:
public class SwingRectangle
{
/**
* @param args
*/
public static void main(String[] args)
{
// TODO Auto-generated method stub
RectangleFrame frame = new RectangleFrame();
RectanglePanel panel = new RectanglePanel();
frame.setVisible(true);
}
}
您没有将
矩形面板添加到框架中
drawingArea = new JPanel();
应该是
drawingArea = new RectanglePanel();
其他要点:
- 您仍然需要覆盖
paintComponent
,而不是@David so+1向他建议的paintComponents
- 在
SwingRectangle
中创建的面板未使用
您没有将矩形面板添加到您的框架中
drawingArea = new JPanel();
应该是
drawingArea = new RectanglePanel();
其他要点:
- 您仍然需要覆盖
paintComponent
,而不是@David so+1向他建议的paintComponents
- 在
SwingRectangle
中创建的面板未使用
您在哪里将矩形面板添加到框架中?我相信您希望覆盖的方法是paintComponent(Graphics g)(不带“s”)。然后确保调用super.paintComponent(g)。paintComponent(g)是JComponent上的一种方法。paintComponents(g)是容器上的一种方法。在给出答案后删除问题的新趋势是什么?最近我已经看过好几次了。你在哪里把你的矩形面板添加到框架中呢?我相信你想要覆盖的方法是paintComponent(Graphics g)(不带's')。然后确保调用super.paintComponent(g)。paintComponent(g)是JComponent上的一种方法。paintComponents(g)是容器上的一种方法。在给出答案后删除问题的新趋势是什么?我最近已经看过好几次了。