2015-10-06 82 views
0
public class Iconshape implements Icon { 


private Color color = Color.RED; 

public Iconshape (Color c) 
{ 
    this.color = c; 
} 
@Override 
public void paintIcon(Component c, Graphics g, int x, int y) { 
    Graphics2D g1 = (Graphics2D) g; 
    Ellipse2D.Double circle = new Ellipse2D.Double (0, 0, 20, 20); 
    g1.setColor(color); 
    g1.fill(circle); 

} 

@Override 
public int getIconWidth() { 
    // TODO Auto-generated method stub 
    return 0; 
} 

@Override 
public int getIconHeight() { 
    // TODO Auto-generated method stub 
    return 0; 
} 
public Color setColor(Color c) 
{ 
    return this.color = c; 

} 
} 


public class Button { 

private static JLabel label; 
private static Iconshape icon = new Iconshape(Color.RED); 

public static void main(String[] args) 
{ 
    JFrame frame = new JFrame(); 
    JButton red = new JButton("Red"); 
    JButton green = new JButton("Green"); 
    JButton blue = new JButton("Blue"); 
    label = new JLabel(icon); 
    final int FRAME_WIDTH = 600; 
    final int FRAME_HEIGHT = 400; 

    red.addActionListener(createRedButtonListener(Color.RED)); 
    blue.addActionListener(createRedButtonListener(Color.BLUE)); 
    green.addActionListener(createRedButtonListener(Color.GREEN)); 

    frame.setSize(FRAME_WIDTH, FRAME_HEIGHT); 
    frame.setLayout(new FlowLayout()); 
    frame.add(red); 
    frame.add(blue); 
    frame.add(green); 
    frame.add(label); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    //frame.pack(); 
    frame.setVisible(true); 



} 

private static ActionListener createRedButtonListener(Color color) { 

    return new ActionListener() 
       { 
       public void actionPerformed(ActionEvent event) 
       { 
        if (color == Color.RED) 
        { icon.setColor(Color.RED); 
         label.repaint(); 
        } 
        if (color == Color.BLUE) 
        { icon.setColor(Color.BLUE); 
         label.repaint(); 
        } 
        if (color == Color.GREEN) 
        { icon.setColor(Color.GREEN); 
         label.repaint(); 
        } 
       } 
      }; 
} 
} 

嗨,我要实现一个程序,在按钮单击时更改标签颜色,但唯一显示在Jframe上的是3个按钮。我能否得到一些帮助,我刚开始学习时并不知道很多GUI的东西。标签不显示在Jframe上

这是我迄今为止

enter image description here

回答

5

你的图标的宽度和高度都为0的截图,所以没有什么作画。

他们getIconHeight()getIconWidth()方法应该返回20,因为那是你的椭圆的大小。

+0

谢谢,我无法看到, – KhoaVo

+0

我upvoted这个答案 – KhoaVo