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.

 
AAPL
$97.67
Apple Inc.
+1.41
MSFT
$43.63
Microsoft Corpora
+0.89
GOOG
$511.17
Google Inc.
-13.34

MacTech Search:
Community Search:

Software Updates via MacUpdate

Coda 2.5 - One-window Web development su...
Coda is a powerful Web editor that puts everything in one place. An editor. Terminal. CSS. Files. With Coda 2, we went beyond expectations. With loads of new, much-requested features, a few... Read more
Arq 4.6.1 - Online backup to Google Driv...
Arq is super-easy online backup for the Mac. Back up to your own Google Drive storage (15GB free storage), your own Amazon Glacier ($.01/GB per month storage) or S3, or any SFTP server. Arq backs up... Read more
Airfoil 4.8.10 - Send audio from any app...
Airfoil allows you to send any audio to AirPort Express units, Apple TVs, and even other Macs and PCs, all in sync! It's your audio - everywhere. With Airfoil you can take audio from any... Read more
Apple iMovie 10.0.6 - Edit personal vide...
With an all-new design, Apple iMovie lets you enjoy your videos like never before. Browse your clips more easily, instantly share your favorite moments, and create beautiful HD movies and Hollywood-... Read more
OnyX 2.8.8 - Maintenance and optimizatio...
OnyX is a multifunctional utility for OS X. It allows you to verify the startup disk and the structure of its System files, to run miscellaneous tasks of system maintenance, to configure the hidden... Read more
Parallels Desktop 10.1 - Run Windows app...
Parallels Desktop is simply the world's bestselling, top-rated, and most trusted solution for running Windows applications on your Mac. With Parallels Desktop for Mac, you can seamlessly run both... Read more
Apple Keynote 6.5 - Apple's present...
Apple Keynote makes it simple to create and deliver beautiful presentations. Powerful tools and dazzling effects bring your ideas to life. You can work seamlessly between Mac and iOS devices. And... Read more
OmniPlan 2.3.7 - Robust project manageme...
With OmniPlan, you can create logical, manageable project plans with Gantt charts, schedules, summaries, milestones, and critical paths. Break down the tasks needed to make your project a success,... Read more
Flavours 1.1.16 - Create and apply theme...
Flavours is a Mac application that allow users to create, apply and share beautifully designed themes. Classy Give your Mac a gorgeous new look by applying delicious themes! Easy Unleash your... Read more
Duplicate Annihilator 5.1.0 - Find and d...
Duplicate Annihilator takes on the time-consuming task of comparing the images in your iPhoto library using effective algorithms to make sure that no duplicate escapes. Duplicate Annihilator detects... Read more

Latest Forum Discussions

See All

My Very Hungry Caterpillar (Education)
My Very Hungry Caterpillar 1.0.0 Device: iOS Universal Category: Education Price: $3.99, Version: 1.0.0 (iTunes) Description: Care for your very own Very Hungry Caterpillar! My Very Hungry Caterpillar will captivate you as he crawls... | Read more »
Dungeon Dick (Games)
Dungeon Dick 1.1 Device: iOS Universal Category: Games Price: $.99, Version: 1.1 (iTunes) Description: Dungeon Dick is a fantasy adventure where you must discover the wicked plot to destroy the lands . 'Fling' at your foes and land... | Read more »
Here’s How the Apple Watch Could Transfo...
With the Apple Watch’s generic release date of, “early 2015” hovering on the horizon, it’s only a matter of time before gamers begin to ask “What’s in it for us?” The obvious choice would be to place entire games directly on the face of the watch,... | Read more »
Republique Episode 3: Ones & Zeroes...
Republique Episode 3: Ones & Zeroes is Available Now Posted by Rob Rich on October 17th, 2014 [ permalink ] Universal App - Designed for iPhone and iPad | Read more »
Loot Raiders Review
Loot Raiders Review By Campbell Bird on October 17th, 2014 Our Rating: :: PRESS BUTTON, GET LOOTUniversal App - Designed for iPhone and iPad This menu-based loot game is suitable to compel those with pretty extreme loot lust.   | Read more »
Angry Birds are Crashing Puzzle & Dr...
Angry Birds are Crashing Puzzle & Dragons Next Week Posted by Rob Rich on October 17th, 2014 [ permalink ] Next week, Puzzle & Dragons is getting a little angry. Because, you know, Angry Birds. It’s a… a pun. I thought… never mind. | Read more »
Incandescence Review
Incandescence Review By Andrew Fisher on October 17th, 2014 Our Rating: :: ALL TAPPED OUTUniversal App - Designed for iPhone and iPad Incandescence promises intense tapping action, but isn’t particularly fun.   | Read more »
Lion Pig (Games)
Lion Pig 1.0 Device: iOS Universal Category: Games Price: $1.99, Version: 1.0 (iTunes) Description: "Leaving aside the biology of how a pig and a lion might meet, fall in love, and create this curious cross-breed, Lion Pig is a... | Read more »
Zero Lives (Games)
Zero Lives 1.0 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0 (iTunes) Description: Zero Lives is a puzzle game. Simple and elegant at its core but deep and captivating the more you play. Each puzzle will challenge... | Read more »
#SUPERHYPER (Games)
#SUPERHYPER 001 Device: iOS Universal Category: Games Price: $.99, Version: 001 (iTunes) Description: "This is a game that fans of challenging minimalist arcade games, not to mention pixel art, should keep an eye on" - Touch Arcade "... | Read more »

Price Scanner via MacPrices.net

Belkin Announces Full Line of Keyboards and C...
Belkin International has unveiled a new lineup of keyboard cases and accessories for Apple’s newest iPads, featuring three QODE keyboards and a collection of thin, lightweight folios for both the... Read more
Verizon offers new iPad Air 2 preorders for $...
Verizon Wireless is accepting preorders for the new iPad Air 2, cellular models, for $100 off MSRP with a 2-year service agreement: - 16GB iPad Air 2 WiFi + Cellular: $529.99 - 64GB iPad Air 2 WiFi... Read more
Price drops on refurbished Mac minis, now ava...
The Apple Store has dropped prices on Apple Certified Refurbished previous-generation Mac minis, with models now available starting at $419. Apple’s one-year warranty is included with each mini, and... Read more
Apple refurbished 2014 MacBook Airs available...
The Apple Store has Apple Certified Refurbished 2014 MacBook Airs available for up to $180 off the cost of new models. An Apple one-year warranty is included with each MacBook, and shipping is free.... Read more
Refurbished 2013 MacBook Pros available for u...
The Apple Store has Apple Certified Refurbished 13″ and 15″ MacBook Pros available starting at $929. Apple’s one-year warranty is standard, and shipping is free: - 13″ 2.5GHz MacBook Pros (4GB RAM/... Read more
WaterField Designs Unveils Outback iPad Slip...
Fresh on the heels of Apple’s announcement Thursday, WaterField Designs unveils its new Outback Slip Case for the iPad Air 2 and iPad mini 3 — a custom-fitted case for the just-announced Apple iPads... Read more
Apple Introduces iPad Air 2 & iPad mini 3...
Apple on Thursday introduced iPad Air 2, slimmed down again to just 6.1 mm, and weighing less than a pound. iPad Air 2 also features an improved Retina display claimed to deliver enhanced contrast... Read more
OS X Yosemite Available Now as a Free Upgrade
Apple on Thursday announced that OS X 10.10 Yosemite is available as a free upgrade for Mac users from the Mac App Store, introducing ontinuity features that make it easy to hand off activities... Read more
Apple Pay Supporting Mobile Payments Availabl...
Apple on Thursday announced that customers can start making payments with the touch of a finger on Monday, October 20, when Apple Pay becomes available in the US. Apple Pay offers an easy, secure and... Read more
Apple drops prices on refurbished iPad Air an...
Apple has dropped prices on Apple Certified Refurbished iPad Airs and iPad mini 2s, with models now available starting at $249. Apple’s one-year warranty is included with each model, and shipping is... Read more

Jobs Board

Position Opening at *Apple* - Apple (United...
**Job Summary** At the Apple Store, you connect business professionals and entrepreneurs with the tools they need in order to put Apple solutions to work in their Read more
Position Opening at *Apple* - Apple (United...
**Job Summary** The Apple Store is a retail environment like no other - uniquely focused on delivering amazing customer experiences. As an Expert, you introduce people Read more
Position Opening at *Apple* - Apple (United...
**Job Summary** As businesses discover the power of Apple computers and mobile devices, it's your job - as a Solutions Engineer - to show them how to introduce these Read more
Position Opening at *Apple* - Apple (United...
…Summary** As a Specialist, you help create the energy and excitement around Apple products, providing the right solutions and getting products into customers' hands. You Read more
Project Manager, *Apple* Financial Services...
**Job Summary** Apple Financial Services (AFS) offers consumers, businesses and educational institutions ways to finance Apple purchases. We work with national and Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.