重新实现paintComponent(图形g)

时间:2015-12-11 13:33:01

标签: java paintcomponent graphics2d

是否可以更改创建组件的paintComponent(Graphics g)方法的实现?

用例:(简化为2个组件)
 1.在一些黑盒子中创建两个组件JLabel jlabel1,JLabel jlabel2  2.将它们放入HashMap<String, Component> components,其中第一个参数是id,第二个是我们的组件jLabel1,jlabel2。
此部分为blackbox 。此HashMap中提供了组件  3.加载HashMap组件,遍历组件并从地图中获取它们  4. 这里我需要更改从HashMap提供组件的痛苦方法。


注意:这种情况下的更改意味着轮换。
注2:我知道怎么做旋转。问题是如何重新实现现有组件的paint(resp paintComponent)方法能够应用将进行旋转的代码。在hashmap中将组件作为blackbox提供时。

是否可能?

2 个答案:

答案 0 :(得分:1)

您可以创建自己的MyLabel extends JLabel。并覆盖方法paintComponent(Graphics g)。在MyLabel组件中,您可以添加标记以旋转或不标记。

答案 1 :(得分:1)

您可以创建一个扩展组件的新类,并覆盖此类中的组件方法。例如:

public class Label extends JLabel {
    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
    }
}

或者,您可以直接创建组件并覆盖其方法,例如:

JLabel l = new JLabel() {
    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
    }
};