Ola Pessoal,
Estou com problemas para implementar um GlassPanel dentro de Internal
Frames:
1. O GlassPanel (no qual estou desenhando um circulo vermelho) nao aparece dentro do
InternalFrame
quando a janela em questao esta selecionada, somente quando seleciono/ativo outra
janela eh que o
glasspanel pode ser visualizado. Nao acredito que seja bug, pois o metodo paint do
GlassPanel nao
eh chamado quanto a janela encontrasse selecionada. Provavelmente eh algum setup
necessario ao
JDesktop, porem nao o encontrei nenhuma referencia na documentacao da sun. Por favo se
alguem ja
tiver encontrado alguma solucao para este problema me responda.
ps: seguem um exemplo que fiz com o problema. (desculpem o spawn na
lista)
Obrigado.
Luciano da Silva Ribas
----------------------------------------------------
LASD/CEFETPR - Laboratorio de Sistemas Distribuidos
TMN Project - Telecommunications Management Network
Fone: +55 41 3104763 and +55 41 3104763
Cellular: +55 41 9910750
email: [EMAIL PROTECTED]
----------------------------------------------------
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class Prototipo_hci extends JFrame {
JDesktopPane desktop;
public Prototipo_hci() {
super("Prototipo HCI");
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
desktop = new JDesktopPane();
setContentPane(desktop);
setJMenuBar(createMenuBar());
//desktop.putClientProperty("JDesktopPane.dragMode", "outline");
}
protected JMenuBar createMenuBar() {
JMenuBar menuBar;
JMenu menu, submenu;
JMenuItem menuItem;
JCheckBoxMenuItem cbMenuItem;
JRadioButtonMenuItem rbmenuItem;
//Create the menu bar.
menuBar = new JMenuBar();
setJMenuBar(menuBar);
//Build the first menu.
menu = new JMenu("Edit");
menu.setMnemonic(KeyEvent.VK_E);
menu.getAccessibleContext().setAccessibleDescription( "Edit NE");
menuBar.add(menu);
//a group of JMenuItems
menuItem = new JMenuItem("Copy", KeyEvent.VK_C);
menuItem.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_C,
ActionEvent.CTRL_MASK));
menuItem.getAccessibleContext().setAccessibleDescription( "Copy NE");
// menuItem.addActionListener(this);
menu.add(menuItem);
menuItem = new JMenuItem("Paste", KeyEvent.VK_P);
menuItem.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_P,
ActionEvent.CTRL_MASK));
menuItem.getAccessibleContext().setAccessibleDescription( "Paste NE");
// menuItem.addActionListener(this);
menu.add(menuItem);
menuItem = new JMenuItem("Insert", KeyEvent.VK_I);
menuItem.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_I,
ActionEvent.CTRL_MASK));
menuItem.getAccessibleContext().setAccessibleDescription( "Insert NE");
//menuItem.addActionListener(this);
menu.add(menuItem);
menuItem = new JMenuItem("Delete", KeyEvent.VK_D);
menuItem.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_D,
ActionEvent.CTRL_MASK));
menuItem.getAccessibleContext().setAccessibleDescription( "Delete NE");
//menuItem.addActionListener(this);
menu.add(menuItem);
menuBar.add(menu);
//Build the first menu.
menu = new JMenu("Config");
menu.setMnemonic(KeyEvent.VK_E);
menu.getAccessibleContext().setAccessibleDescription( "Config");
menuBar.add(menu);
//submenus para Look and Feel
submenu = new JMenu("Look and Feel..");
submenu.setMnemonic(KeyEvent.VK_L);
ButtonGroup group = new ButtonGroup();
rbmenuItem = new JRadioButtonMenuItem("MetalLookAndFeel");
rbmenuItem.setSelected(true);
rbmenuItem.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_E,
ActionEvent.ALT_MASK));
rbmenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
SwingUtilities.updateComponentTreeUI(desktop.getRootPane());
} catch (Exception ex) { }
}
});
group.add(rbmenuItem);
submenu.add(rbmenuItem);
rbmenuItem = new JRadioButtonMenuItem("MotifLookAndFeel");
rbmenuItem.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_M,
ActionEvent.ALT_MASK));
rbmenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
SwingUtilities.updateComponentTreeUI(desktop.getRootPane());
} catch (Exception ex) { }
}
});
group.add(rbmenuItem);
submenu.add(rbmenuItem);
rbmenuItem = new JRadioButtonMenuItem("WindowsLookAndFeel");
rbmenuItem.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_W,
ActionEvent.ALT_MASK));
rbmenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
SwingUtilities.updateComponentTreeUI(desktop.getRootPane());
} catch (Exception ex) { }
}
});
group.add(rbmenuItem);
submenu.add(rbmenuItem);
rbmenuItem = new JRadioButtonMenuItem("MacLookAndFeel");
rbmenuItem.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_A,
ActionEvent.ALT_MASK));
rbmenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
UIManager.setLookAndFeel("javax.swing.plaf.mac.MacLookAndFeel");
SwingUtilities.updateComponentTreeUI(desktop.getRootPane());
} catch (Exception ex) { }
}
});
group.add(rbmenuItem);
submenu.add(rbmenuItem);
menu.add(submenu);
menuItem = new JMenuItem("Language..", KeyEvent.VK_A);
menuItem.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_A,
ActionEvent.ALT_MASK));
menuItem.getAccessibleContext().setAccessibleDescription( "Language");
// menuItem.addActionListener(this);
menu.add(menuItem);
menuItem = new JMenuItem("Layers..", KeyEvent.VK_I);
menuItem.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_I,
ActionEvent.ALT_MASK));
menuItem.getAccessibleContext().setAccessibleDescription( "Layers");
//menuItem.addActionListener(this);
menu.add(menuItem);
menuBar.add(menu);
//Build the first menu.
menu = new JMenu("View [clique aqui]");
menu.setMnemonic(KeyEvent.VK_V);
menu.getAccessibleContext().setAccessibleDescription( "View [clique aqui]");
menuBar.add(menu);
//a group of JMenuItems
menuItem = new JMenuItem("Map", KeyEvent.VK_M);
menuItem.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_M,
ActionEvent.CTRL_MASK));
menuItem.getAccessibleContext().setAccessibleDescription( "Maps.");
/* menuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
createMapFrame();
}
});*/
menu.add(menuItem);
//a group of JMenuItems
menuItem = new JMenuItem("Alarms [clique aqui]", KeyEvent.VK_L);
menuItem.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_L,
ActionEvent.CTRL_MASK));
menuItem.getAccessibleContext().setAccessibleDescription( "Alarms.. [clique
aqui]");
menuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
createAlarmFrame();
}
});
menu.add(menuItem);
menuItem = new JMenuItem("NE", KeyEvent.VK_N);
menuItem.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_N,
ActionEvent.CTRL_MASK));
menuItem.getAccessibleContext().setAccessibleDescription( "NE");
// menuItem.addActionListener(this);
menu.add(menuItem);
menuBar.add(menu);
return menuBar;
}
protected void createAlarmFrame() {
AlarmInternalFrame frame = new AlarmInternalFrame();
frame.setVisible(true);
desktop.add(frame);
try {
frame.setSelected(true);
} catch (java.beans.PropertyVetoException e) {}
}
public static void main(String[] args) {
Prototipo_hci frame = new Prototipo_hci();
frame.pack();
frame.setSize(600,600);
frame.setVisible(true);
}
}
import javax.swing.*;
import javax.swing.event.MouseInputAdapter;
import java.awt.*;
import java.awt.event.*;
class NetworkMapGlassPane extends JComponent {
public NetworkMapGlassPane(JInternalFrame internalframe) {
// CBListener listener = new CBListener( this, internalframe);
// addMouseListener(listener);
// addMouseMotionListener(listener);
}
public void paint(Graphics g) {
System.out.println(" paint NetworkMapGlassPane! -->" +
this.getName());
g.setColor(Color.red);
g.fillOval(10, 10, 50, 50);
}
}
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.net.*;
public class AlarmInternalFrame extends JInternalFrame {
static private NetworkMapGlassPane NetGlassPane;
static int openFrameCount = 0;
static final int xOffset = 30, yOffset = 30;
boolean debug = true;
public AlarmInternalFrame() {
super("Alarm View #" + (++openFrameCount), true, true, true, true);
setSize(300,300);
setVisible(true);
setLocation(xOffset*openFrameCount, yOffset*openFrameCount);
NetGlassPane = new NetworkMapGlassPane(this);
NetGlassPane.setName("NetGlassPane #"+openFrameCount);
this.setGlassPane(NetGlassPane);
NetGlassPane.setOpaque(false);
NetGlassPane.setVisible(true);
}
/* nao eh necessario
public void paintComponent(Graphics g) {
NetGlassPane.paint(g);
}*/
}