Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.gui > #565
| From | "rjkoop" <rjkoop@THRWHITE.remove-dii-this> |
|---|---|
| Subject | Swing embedded in SWT JPo |
| Message-ID | <1167937309.866198.186320@6g2000cwy.googlegroups.com> (permalink) |
| Newsgroups | comp.lang.java.gui |
| Date | 2011-04-27 15:28 +0000 |
| Organization | TDS.net |
To: comp.lang.java.gui
I'm having problems when I embed an Swing component within an SWT
composite. Inside the Swing component I have a JTable that contains a
JPopupMenu. The popup menu comes up fine when I right mouse click and
go does correctly if I click anywhere inside the Swing component but
DOESN"T dissapear when I click on an SWT appear of the application.
>From what I've read I'm doing it correctly. Is this a bug in
Eclipse/SWT? I'm using the Eclipse 3.2.1 and the associated SWT 3.2.1.
Here's a simple block of code that can be used to reproduce the
problem. Am I doing something wrong? Or do I have to manually code
the popdown of the Swing JPopupMenu from the SWT thread?
/*
* Created on 20-Apr-06
*
*/
package mine.app;
import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JRootPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import org.eclipse.swt.SWT;
import org.eclipse.swt.awt.SWT_AWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
public class SWTAWTTest
{
public static void main(String[] args)
{
Display swtDisplay = new Display();
Shell swtShell = new Shell(swtDisplay);
swtShell.setSize(400,200);
swtShell.setLayout(new FillLayout());
Label swtLabel = new Label(swtShell,SWT.NONE);
swtLabel.setText("SWT Label");
swtLabel.setToolTipText("SWT Label");
Button swtButton = new Button(swtShell,SWT.NONE);
swtButton.setText("SWT Button");
swtButton.setToolTipText("SWT Button");
Table swtTable = new Table(swtShell,SWT.BORDER);
swtTable.setHeaderVisible(true);
swtTable.setLinesVisible(true);
swtTable.setToolTipText("SWT Table");
Composite swtComposite = new Composite(swtShell,SWT.NO_BACKGROUND |
SWT.EMBEDDED);
Frame swingFrame = SWT_AWT.new_Frame(swtComposite);
final JTable swingTable = new JTable(5,5);
swingTable.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e)
{
if (e.getButton() != 3)
return;
JPopupMenu popup = new JPopupMenu();
JMenuItem menuItem = new JMenuItem("Select me");
menuItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
}
});
popup.add(menuItem);
popup.show(swingTable,e.getX(),e.getY());
}
});
JScrollPane scrollPane = new JScrollPane(swingTable);
swingFrame.add(scrollPane);
swtShell.open();
while (!swtShell.isDisposed())
{
if (!swtDisplay.readAndDispatch())
swtDisplay.sleep();
}
swtDisplay.dispose();
}
}
---
* Synchronet * The Whitehouse BBS --- whitehouse.hulds.com --- check it out free usenet!
--- Synchronet 3.15a-Win32 NewsLink 1.92
Time Warp of the Future BBS - telnet://time.synchro.net:24
Back to comp.lang.java.gui | Previous | Next — Next in thread | Find similar | Unroll thread
Swing embedded in SWT JPo "rjkoop" <rjkoop@THRWHITE.remove-dii-this> - 2011-04-27 15:28 +0000 Re: Swing embedded in SWT "Richard" <richard@THRWHITE.remove-dii-this> - 2011-04-27 15:28 +0000
csiph-web