是否可以更改创建组件的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提供时。
是否可能?
答案 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);
}
};