【发布时间】:2021-10-29 19:27:14
【问题描述】:
无论如何我可以设置一个内部私有 JPanel 不透明吗?一个例子:
//Assuming I have no access rights to modify OuterPanel.java
class OuterPanel extends JPanel{
private JPanel internalPanel = new JPanel();
public OuterPanel(){
setLayout(new BorderLayout());
internalPanel.setOpaque(true);
add(internalPanel, BorderLayout.CENTER);
}
}
class MyClass{
private OuterPanel myPanel;
public MyClass(){
panel = new OuterPanel();
// is there anyway i can set myPanel's internalPanel to opaque(false)?
// assuming OuterPanel is a library and i have no way to modify it.
}
}
使用上面的示例代码,假设 OuterPanel 是一个库类,我无法修改它的代码,有什么方法可以实际设置它的 internalPanel 的不透明设置?
【问题讨论】:
-
对于您显示的示例(特别是如果您的外部面板内只有一个组件),您可以使用
getComponents()获取包含在您的OuterPanel中的所有组件。应该只有一个组件,您想要的internalPanel。然后你可以投射和修改它。