对于想要了解有关awt / swing的更多信息而又没有对awt / swing进行很多工作的人,我不确定我是否正确执行了此操作。我想做的是使用创建6个圆的方法重写paintComponent(),这些圆应该在某些位置添加到inner
面板中(x + 50
和y + 50
仅用于测试目的)。我浏览了包括本网站在内的在线资源,圈子似乎仍然没有出现。我确定我做错了什么,但不确定。提示和/或信息链接将不胜感激
这是我要创建并向面板添加圆圈的课程:
public class TimeUnit extends JPanel {
private static final long serialVersionUID = 1L;
private int x = -50;
private int y = -50;
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
ArrayList<Graphics> list = new ArrayList<Graphics>(6);
for (int i = 0; i < 6; i++) {
list.add(g.create());
}
for (Graphics r : list) {
r.drawOval(x + 50, y + 50, 50, 50);
}
}
这是将其合并到我的主程序中的位置:
JPanel inner = new JPanel();
inner.setLayout(null);
inner.setSize(325, 570);
inner.setBackground(null);
inner.setLocation(500, 350);
inner.setBorder(BorderFactory.createMatteBorder(0, 0, 0, 1, Color.BLACK));
inner.setVisible(true);
inner.repaint();
//----Containers to Panel/Panel to Frame---------
Panel.add(inner);
Panel.add(labelOne);
Panel.add(labelTwo);
Panel.add(labelFour);
Panel.add(labelEight);
Panel.add(timeLabel);
frame.add(Panel, BorderLayout.CENTER);
您应该使用传入的Graphics g
绘制椭圆,而不是创建新的Graphics
对象:
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
for (int i = 0; i < 6; i++) {
g.drawOval(x + 50*i, y + 50*i, 50, 50);
}
}