TweetFollow Us on Twitter

Apr 97 Top 10

Volume Number: 13 (1997)
Issue Number: 4
Column Tag: Symantec Top Ten

Symantec Top 10

By Matthew Hopkins

In this month's column, we are focusing on customer issues pertaining to our C++ and Java development environments, including the newly released Visual Café. Let's warm up with a question regarding Visual Page, a dynamic web-authoring utility

Q: In Visual Page, how do you tell what size a document is before you save it?

A: By selecting Download Statistics... from the Edit menu, you can see a dialog box which not only tells you the total document size, but also tells you how long (on the average) it will take to download your page, depending upon the speed of your modem.

Q: I am using Visual Café, and I am having a problem getting the GridLayout to work properly. For instance, when I set the number of columns to 3 in the Property Manager, the applet doesn't respond at all visually. What's going on here?

A: Visual Café behaves in this manner because of how GridLayout is implemented in Java. When the rows and columns are both defined to anything other than 0, the Layout Manager will ignore the number of columns you have specified and calculate them based upon the number of rows and the number of elements. If you are interested in having the Layout Manager organize your elements according to a certain number of columns, set the number of rows to 0 (meaning "any"), and the Layout Manager will make the number of rows dependent upon the number of columns.

Q: I am getting an error of type -43 when running my Java application in Symantec Café. How do I correct this?

A: In an application, the main function needs to be static, and the main class needs to be set in the Project Options window.

Q: I am running the following program in Symantec Café and it does nothing but hang. Could you tell me why?

class PrintThread implements Runnable {
         String str;
         
         public PrintThread (String str) {
                 this.str = str;
         } 

         public void run() {
                 for (;;)
                         System.out.print(str);
         } 
} 

class ConcurrencyTest {
         public static void main(String argv[]) {
                 new Thread(new PrintThread("A")).start();
                 new Thread(new PrintThread("B")).start();
          } 
} 

A: This does not actually cause a freeze. It just appears that way because the System.out.print never receives a "" character, so it never shows you what's going on; it adds characters to the print stream indefinitely. To achieve the results you intended (mainly, seeing A and B printed forever), either call PrintThread with "A" and "B", or change the line reading System.out.print(str) to System.out.println(str).

Q: Which folder do you put packages into in Symantec Café for the Mac?

A: You have two options:

1) Place any additional class packages into the {java libraries} folder.

2) Place them in whatever folder you like as long as you open the Preferences:Paths window and add the search path to the upper window so that Café will know to search that folder.

Q: I am developing an application in Café that includes HTML text and embedded Applets. Some of the applets need to read local files whose names are supplied by the user, but the applet security rules prevent applets from reading local files. Is there a standard way of reading user-OK'ed local files that I am missing?

A: The names of the files have to be "fully qualified" (i.e. volume/folder/file), and there can be no non-standard characters anywhere in the path (like ƒ after folder names.) You can use something like this

FileDialog file_dialog_open;
file_dialog_open = new FileDialog(this, "Open A File", FileDialog.LOAD);

public void loadFile() {
 file_dialog_open.pack();
 file_dialog_open.show();
   if (file_dialog_open.getFile() != null) {
      currentFolder = file_dialog_open.getDirectory();
      selectedFile = new String(file_dialog_open.getFile());
      fullPath = currentFolder + "/" + selectedFile;
   } 
} 

This lets the user select a file and then pass the fully qualified path name for the file to the method that actually accesses the data.

Q: Is there a simple way to use ImageMaps for applets in Java? I need to write an applet that loads a graphic file at the proper coordinates when the mouse is moved over a certain location.

A: The key to this problem is the Component action method mouseEnter(). This works for all components, including buttons, windows, etc. In order to implement ImageMaps, I find the canvas component to work the best, being invisible. Here is a small snippet of code written in Visual Café that illustrates this

import java.awt.*;
import java.applet.*;

public class Applet1 extends Applet {    
        public void init() {
                super.init();
                setLayout(null);
                addNotify();
                resize(426,266);
                theMap = new ImageMap("myMap", 50, 50, getGraphics());
                theMap.reshape(60,31,186,150);
                add(theMap);
        } 

        public boolean handleEvent(Event event) {
                return super.handleEvent(event);
        } 
        ImageMap theMap;
} 

class ImageMap extends Canvas {
        boolean on;
        String label;
        Graphics g;
        

        ImageMap(String label, int sizex, int sizey, Graphics g) {
                this.label=label;
                this.g=g;
                resize(sizex, sizey);
        } 
        
        public void paint(Graphics g) {
                update(g);
        } 
        
        public void update(Graphics g) {
                if(on) {
                        this.g.drawString("Hello, World!", 25, 25);
                } 
        } 
        
        public boolean mouseEnter(Event evt, int x, int y) {
                on=true;
                repaint();
                return true;
        } 
} 

Here, the text Hello, World! has been substituted for the image that should be displayed. In case you wish to remove the image when the mouse is removed from the area, use the method mouseExit() in the same way.

Q: I am using a HashTable to keep track of a number of Button objects in Symantec Café, but every time I click on the button and look up the corresponding HashTable entry, it returns null.

import java.applet.*;
import java.awt.*;
import java.util.*;

public class HashTblTest extends Applet {
        Hashtable ht = new Hashtable();
        Button[] b = new Button[3];

        public void init()       {
                for (int i = 0;i < 3;i++) {
                        b[i] = new Button("Button " + i);
                        add(b[i]);
                        ht.put(b[i], new Integer(i));    
                }   
        } 
        public boolean action(Event e, Object o){
                System.out.println(ht.get(o));
                return false;
        }      
} 

What am I doing wrong?

A: The problem here is that the Button action method counter-intuitively provides as its Object parameter a STRING which is the button's name, not the button object itself. You have entered the buttons themselves into the HashTable, but the action method is looking up a string, not a button in your table. The best way to work around this is to change your action code to read: System.out.println(ht.get(e.target)); This will achieve your desired results.

Q: I have written a program in the Think Project Manager 7.0.5 that runs in the debugger, but when I try to run it in the Finder or without the debugger, the main window does not even come up. What do I need to do to get it to work?

A: This usually indicates a failure to initialize the Macintosh toolbox. Your code seems to work in the debugger because the debugger initializes the toolbox for you.

Q: I have written a program that uses two-dimensional and three-dimensional arrays. It seems to look fine but I keep getting link errors. What can I do to fix this problem?

A: It sounds like you are putting some huge arrays on the stack! Space is allocated for these arrays prior to run-time, and if your arrays are large enough, you could be causing a stack overflow that is posing some problems for the linker. There is an excellent example on how to put these arrays on the heap (allocating them at run time) in the Think Reference under Arrays Bigger than 32k.

Special thanks to Mark Baldwin, Ted Flug, Richard Hill, Steve Howard, Scott Morrison, Kevin Kenan, and Kevin Quah.

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

Bookends 12.8 - Reference management and...
Bookends is a full-featured bibliography/reference and information-management system for students and professionals. Bookends uses the cloud to sync reference libraries on all the Macs you use.... Read more
Apple iTunes 12.6 - Play Apple Music and...
Apple iTunes lets you organize and stream Apple Music, download and watch video and listen to Podcasts. It can automatically download new music, app, and book purchases across all your devices and... Read more
Default Folder X 5.1.4 - Enhances Open a...
Default Folder X attaches a toolbar to the right side of the Open and Save dialogs in any OS X-native application. The toolbar gives you fast access to various folders and commands. You just click on... Read more
Amazon Chime 4.1.5587 - Amazon-based com...
Amazon Chime is a communications service that transforms online meetings with a secure, easy-to-use application that you can trust. Amazon Chime works seamlessly across your devices so that you can... Read more
CrossOver 16.2 - Run Windows apps on you...
CrossOver can get your Windows productivity applications and PC games up and running on your Mac quickly and easily. CrossOver runs the Windows software that you need on Mac at home, in the office,... Read more
Adobe Creative Cloud 4.0.0.185 - Access...
Adobe Creative Cloud costs $19.99/month for a single app, or $49.99/month for the entire suite. Introducing Adobe Creative Cloud desktop applications, including Adobe Photoshop CC and Illustrator CC... Read more
MegaSeg 6.0.2 - Professional DJ and radi...
MegaSeg is a complete solution for pro audio/video DJ mixing, radio automation, and music scheduling with rock-solid performance and an easy-to-use design. Mix with visual waveforms and Magic... Read more
Bookends 12.8 - Reference management and...
Bookends is a full-featured bibliography/reference and information-management system for students and professionals. Bookends uses the cloud to sync reference libraries on all the Macs you use.... Read more
Adobe Creative Cloud 4.0.0.185 - Access...
Adobe Creative Cloud costs $19.99/month for a single app, or $49.99/month for the entire suite. Introducing Adobe Creative Cloud desktop applications, including Adobe Photoshop CC and Illustrator CC... Read more
Default Folder X 5.1.4 - Enhances Open a...
Default Folder X attaches a toolbar to the right side of the Open and Save dialogs in any OS X-native application. The toolbar gives you fast access to various folders and commands. You just click on... Read more

The best deals on the App Store this wee...
Deals, deals, deals. We're all about a good bargain here on 148Apps, and luckily this was another fine week in App Store discounts. There's a big board game sale happening right now, and a few fine indies are still discounted through the weekend.... | Read more »
The best new games we played this week
It's been quite the week, but now that all of that business is out of the way, it's time to hunker down with some of the excellent games that were released over the past few days. There's a fair few to help you relax in your down time or if you're... | Read more »
Orphan Black: The Game (Games)
Orphan Black: The Game 1.0 Device: iOS Universal Category: Games Price: $4.99, Version: 1.0 (iTunes) Description: Dive into a dark and twisted puzzle-adventure that retells the pivotal events of Orphan Black. | Read more »
The Elder Scrolls: Legends is now availa...
| Read more »
Ticket to Earth beginner's guide: H...
Robot Circus launched Ticket to Earth as part of the App Store's indie games event last week. If you're not quite digging the space operatics Mass Effect: Andromeda is serving up, you'll be pleased to know that there's a surprising alternative on... | Read more »
Leap to victory in Nexx Studios new plat...
You’re always a hop, skip, and a jump away from a fiery death in Temple Jump, a new platformer-cum-endless runner from Nexx Studio. It’s out now on both iOS and Android if you’re an adventurer seeking treasure in a crumbling, pixel-laden temple. | Read more »
Failbetter Games details changes coming...
Sunless Sea, Failbetter Games' dark and gloomy sea explorer, sets sail for the iPad tomorrow. Ahead of the game's launch, Failbetter took to Twitter to discuss what will be different in the mobile version of the game. Many of the changes make... | Read more »
Splish, splash! The Pokémon GO Water Fes...
Niantic is back with a new festival for dedicated Pokémon GO collectors. The Water Festival officially kicks off today at 1 P.M. PDT and runs through March 29. Magikarp, Squirtle, Totodile, and their assorted evolved forms will be appearing at... | Read more »
Death Road to Canada (Games)
Death Road to Canada 1.0 Device: iOS Universal Category: Games Price: $7.99, Version: 1.0 (iTunes) Description: Get it now at the low launch price! Price will go up a dollar every major update. Update news at the bottom of this... | Read more »
Bean's Quest Beginner's Guide:...
Bean's Quest is a new take on both the classic platformer and the endless runner, and it's free on the App Store for the time being. Instead of running constantly, you can't stop jumping. That adds a surprising new level of challenge to the game... | Read more »

Price Scanner via MacPrices.net

2.6GHz Mac mini on sale for $559, $140 off MS...
Guitar Center has the 2.6GHz Mac mini (MGEN2LL/A) on sale for $559 including free shipping. Their price is $140 off MSRP, and it’s the lowest price available for this model. Read more
SSD Speeder RAM Disk SSD Life Extender App Fo...
Fehraltorf, Switzerland based B-Eng has announced they are making their SSD Speeder app for macOS publicly available for purchase on their website. SSD Speeder is a RAM disk utility that prevents... Read more
iPhone Scores Highest Overall in Smartphone D...
Customer satisfaction is much higher among smartphone owners who use their device to operate other connected home services such as smart thermostats and smart appliances, according to the J.D. Power... Read more
Swipe CRM Free Photo-Centric CRM Sales DEal C...
Swipe CRM LLC has introduced Swipe CRM: Visual Sales 1.0 for iPad, an app for creating, managing, and sharing visually stunning sales deals. Swipe CRM is targeted to small-and-medium creative... Read more
13-inch 2.0GHz Apple MacBook Pros on sale for...
B&H has the non-Touch Bar 13″ 2.0GHz MacBook Pros in stock today and on sale for $150 off MSRP. Shipping is free, and B&H charges NY sales tax only: - 13″ 2.0GHz MacBook Pro Space Gray (... Read more
15-inch Touch Bar MacBook Pros on sale for up...
B&H Photo has the new 2016 15″ Apple Touch Bar MacBook Pros in stock today and on sale for up to $150 off MSRP. Shipping is free, and B&H charges NY sales tax only: - 15″ 2.7GHz Touch Bar... Read more
Apple’s iPhone 6s Tops Best-Selling Smartphon...
In terms of shipments, the iPhone 6s from Apple bested all competitors for sales in 2016, according to new analysis from IHS Markit, a world leader in critical information, analytics and solutions.... Read more
Logitech Rugged Combo Protective iPad Case an...
Logitech has announced its Logitech Rugged Combo, Logitech Rugged Case, and Logitech Add-on Keyboard for Rugged Case for Apple’s new, more affordable $329 9.7-inch iPad, a complete solution designed... Read more
T-Mobile To Offer iPhone 7 and iPhone 7 Plus...
T-Mobile has announced it will offer iPhone 7 and iPhone 7 Plus (PRODUCT)RED Special Edition in a vibrant red aluminum finish. The introduction of this special edition iPhone celebrates Apple’s 10... Read more
9-inch 128GB iPad Pros on sale for $50-$70 of...
B&H Photo has 9.7″ 128GB Apple WiFi iPad Pros on sale for up to $70 off MSRP, each including free shipping. B&H charges sales tax in NY only: - 9″ Space Gray 128GB WiFi iPad Pro: $649 $50... Read more

Jobs Board

*Apple* Retail - Multiple Positions - Apple,...
Job Description: Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, Read more
Fulltime aan de slag als shopmanager in een h...
Ben jij helemaal gek van Apple -producten en vind je het helemaal super om fulltime shopmanager te zijn in een jonge en hippe elektronicazaak? Wil jij werken in Read more
Starte Dein Karriere-Abenteuer in den Hauptst...
…mehrsprachigen Teams betreust Du Kunden von bekannten globale Marken wie Apple , Mercedes, Facebook, Expedia, und vielen anderen! Funktion Du wolltest schon Read more
*Apple* Retail - Multiple Positions- Chicago...
SalesSpecialist - Retail Customer Service and SalesTransform Apple Store visitors into loyal Apple customers. When customers enter the store, you're also the Read more
Fulltime aan de slag als shopmanager in een h...
Ben jij helemaal gek van Apple -producten en vind je het helemaal super om fulltime shopmanager te zijn in een jonge en hippe elektronicazaak? Wil jij werken in Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.