gpt4 book ai didi

java - 调用我的客户 JPanel 上的方法来更改 JFrame 中所有 JInternalFrame 的标签

转载 作者:行者123 更新时间:2023-12-02 06:01:25 26 4
gpt4 key购买 nike

我有MDI项目。我将客户 JPanel 添加到 JInternalFrame 中。我的客户 JPanel 有一个公共(public)方法来更改某些组件背景颜色。单击 JFrame 上的按钮时,我希望它更改我的客户 JPanel 上所有 InternalFrame 的标签或文本。我怎样才能调用该方法?提前致谢

以下代码是JFrame上按钮的操作

 private void categoryAction(ActionEvent e){
try{
JButton b=(JButton)e.getSource();
Color c=b.getBackground();
JInternalFrame[] allframes = desktop.getAllFrames();
int count = allframes.length;
for (int i=0; i<allframes.length-1; i++){
//call the method on the PDFJPanel
}

}
catch(Exception err){
Utility.DisplayErrorMsg(err.toString());

}

以下代码是将内部框架添加到桌面

private void AddNote(File file){        
JInternalFrame internalFrame = new JInternalFrame("PDFAnnotation"
+ file.getName(), true, true, true, true);
internalFrame.setBounds(0, 0, 600, 100);
desktop.add(internalFrame);


PDFJPanel p=new PDFJPanel(file);
internalFrame.add(p, BorderLayout.CENTER);
internalFrame.setVisible(true);
try {
internalFrame.setSelected(true);
}
catch (java.beans.PropertyVetoException e) {}
this.add(desktop, BorderLayout.CENTER);

//resize the internal frame as full screen
Dimension size = desktop.getSize();
int w = size.width ;
int h = size.height ;
int x=0;
int y=0;
desktop.getDesktopManager().resizeFrame(internalFrame, x, y, w, h);
}

我的客户JPanel上有这个方法

Public void setDefaultColor(Color c){
//change the label and textbox color
}

最佳答案

您可以使用JDesktopPane.getSelectedFrame返回当前 Activity 帧。您可以从布局管理器检索PDFJPanel,即使用BorderLayout.getLayoutComponent()。或者更简单、更干净,您可以扩展 JInternalFrame,即:

class PDFFrame extends JInternalFrame {
private PDFJPanel panel;

public PDFFrame(File file) {
panel = new PDFJPanel(file);
add(panel, BorderLayout.CENTER);
}

public void setDefaultColor(Color c){
panel.setDefaultColor();
}
}

然后,访问它:

JDesktopPane desktop = ...;

PDFFrame frame = (PDFFrame) desktop.getSelectedFrame();
frame.setDefaultColor(Color.BLUE);

关于java - 调用我的客户 JPanel 上的方法来更改 JFrame 中所有 JInternalFrame 的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22645453/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com