Using explicit JavaImporter constructor to make namespace for swing and using it later with the "with" statement to get access to Java classes.

In this way the example can be used in an application that does not use ImporterTopLevel.
This commit is contained in:
igor%mir2.org 2004-08-10 16:11:13 +00:00
Родитель c23fd4c1e9
Коммит 98d50120c7
1 изменённых файлов: 59 добавлений и 52 удалений

Просмотреть файл

@ -5,11 +5,15 @@
* @author Roger E Critchlow, Jr.
*/
importPackage(Packages.javax.swing);
importPackage(Packages.java.awt);
importPackage(Packages.java.awt.event);
var swingNames = JavaImporter();
function createComponents() {
swingNames.importPackage(Packages.javax.swing);
swingNames.importPackage(Packages.java.awt);
swingNames.importPackage(Packages.java.awt.event);
function createComponents()
{
with (swingNames) {
var labelPrefix = "Number of button clicks: ";
var numClicks = 0;
var label = new JLabel(labelPrefix + numClicks);
@ -42,13 +46,16 @@ function createComponents() {
return pane;
}
}
with (swingNames) {
try {
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
UIManager.
setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
} catch (e) { }
//Create the top-level container and add contents to it.
var frame = new JFrame("SwingApplication");
var frame = new swingNames.JFrame("SwingApplication");
frame.getContentPane().add(createComponents(), BorderLayout.CENTER);
// Pass JS function as implementation of WindowListener. It is allowed since
@ -56,7 +63,6 @@ frame.getContentPane().add(createComponents(), BorderLayout.CENTER);
// between methods Rhino passes to JS function the name of corresponding
// method as the last argument
frame.addWindowListener(function(event, methodName) {
print(event + " "+methodName);
if (methodName == "windowClosing") {
java.lang.System.exit(0);
}
@ -65,6 +71,7 @@ print(event + " "+methodName);
//Finish setting up the frame, and show it.
frame.pack();
frame.setVisible(true);
}