public class backGround extends JFrame{
private static Image img;
JDesktopPane desk;
public backGround(JFrame frame,JDesktopPane desk) {
try{
img = javax.imageio.ImageIO.read
(new java.net.URL(getClass().getResource("wall.png"), "wall.png"));
}catch(Exception e){
}
desk = new JDesktopPane(){
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
if(img != null){
g.drawImage(img, 0,0,this.getWidth(),this.getHeight(),this);
//g.drawString("Background Carregado com Sucesso!!!", (this.getWidth()/2), (this.getHeight()/2) );
}else
g.drawString("Image not found", 50,50);
}
};
frame.getContentPane().add(desk);
//frame.setSize(img.getWidth(null),img.getHeight(null));
frame.setVisible(true);
// Comando para que o programa execute maximizado
frame.setExtendedState(this.getExtendedState()|principal.MAXIMIZED_BOTH);
}
}
backGround backGround = new backGround(this,jDesktopPane1);
public void addTelaDesk(JInternalFrame tela){
for (JInternalFrame jInternalFrame : jDesktopPane1.getAllFrames()) {
// se uma janela semelhante estiver aberta
if(jInternalFrame.getClass().toString().equalsIgnoreCase(tela.getClass().toString())){
jInternalFrame.moveToFront(); // traz janela para frente para facilitar a escolha
Object[] opções = {"OK"};
int qst = JOptionPane.showOptionDialog(null, "ESSA TELA JÁ ESTÁ ATIVA","Erro de abertura",
JOptionPane.DEFAULT_OPTION,JOptionPane.QUESTION_MESSAGE,null,opções,opções[0]);
// se utilizar a aberta retorna e não abre outra,
// caso contrário sai do for e abre outra igual
if(qst == 0){
return;
}else if(qst == 1){
break;
}
}
}
jDesktopPane1.add(tela); //adiciona na tela
tela.setVisible(true); // seta visivel
tela.moveToFront();
}
NewJInternalFrame j = new NewJInternalFrame();
addTelaDesk(j);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jDesktopPane1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jDesktopPane1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
NewJInternalFrame j = new NewJInternalFrame();
addTelaDesk(j);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
//getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jDesktopPane1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jDesktopPane1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
As JInternalFrame somente são abertas neste espaço em branco.
A impressão que tenho é que este bloco faz o redimensionamento da área do desktopPane e sobrescreve o meu método. Preciso achar um jeito de manipular esse código ou achar uma outra solução para inserir a imagem ou chamar as telas.
Espero ajuda de vocês. Abraço.