我是否可以將一個內部私有的JPNEL設定為不透明的?一個例子:
//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()。
//有沒有辦法將myPanel的internalPanel設定為不透明(false)?
// 假設OuterPanel是一個庫,我沒有辦法修改它。
}
}
通過上面的示例代碼,假設OuterPanel是一個庫類,我無法修改它的代碼,我是否有辦法真正設定它的internalPanel的不透明設定?
uj5u.com熱心網友回復:
正如maloomeister所提到的。我使用了下面的代碼來解決這個問題。
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() 。
setAllOpaque(panel.getComponents())。
}
//此方法被遞回呼叫以設定所有的Jpanels 。
private void setAllOpaque(Component[] comp){
for(Component com : comp){
if (com instanceof JPanel) {
JPanel p = (JPanel)com;
p.setOpaque(false)。
setAllOpaque(p.getComponents())。
}
}
}
}
我使用了遞回,因為目前這個OuterPanel的例子很簡單,但我實際的實際Jpanel實際上是一個表單,里面充滿了許多不同的Jpanel。這就解決了這個問題。
這可能不是最精煉的方法,所以如果有人有更好的解決方案,請分享!
這不是最精煉的方法。:)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/310275.html
標籤:
上一篇:在Java中創建GUI中的延遲
下一篇:對字串的指定字符進行著色
