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
$101.63
Apple Inc.
-0.03
MSFT
$46.24
Microsoft Corpora
-0.46
GOOG
$573.10
Google Inc.
-2.52

MacTech Search:
Community Search:

Software Updates via MacUpdate

NTFS 11.3.62 - Provides full read and wr...
Paragon NTFS breaks down the barriers between Windows and OS X. Paragon NTFS effectively solves the communication problems between the Mac system and NTFS, providing full read and write access to... Read more
OS X Yosemite 10.10 DP8 - Developer Prev...
Note: This is a Developer Preview. You must be a registered Apple Mac Developer to download this update. You can also sign up for the free OS X Beta Program to download and preview public beta... Read more
FotoMagico 4.5 - Powerful slideshow crea...
FotoMagico lets you create professional slideshows from your photos and music with just a few, simple mouse clicks. It sports a very clean and intuitive yet powerful user interface. High image... Read more
Screenshot Path 1.2.1 - Change the defau...
Screenshot Path lets you change the folder where OS X saves screenshots. Screenshots are saved by default to the user’s desktop. This is handy for the occasional screenshot but those looking to take... Read more
Fantastical 1.3.16 - Create calendar eve...
Fantastical is the Mac calendar you'll actually enjoy using. Creating an event with Fantastical is quick, easy, and fun: Open Fantastical with a single click or keystroke Type in your event details... Read more
GIMP 2.8.14 - Powerful, free image editi...
GIMP is a multi-platform photo manipulation tool. GIMP is an acronym for GNU Image Manipulation Program. The GIMP is suitable for a variety of image manipulation tasks, including photo retouching,... Read more
HoudahSpot 3.9.3 - Advanced front-end fo...
HoudahSpot is an advanced file search tool built upon MacOS X Spotlight. Spotlight unleashed Create detailed queries to locate the exact file you need Narrow down searches. Zero in on files Save... Read more
djay 4.2.3 - Transform your Mac into a f...
djay transforms your Mac into a full-fledged DJ system, allowing you to mix your iTunes music library on a hyper-realistic turntable interface. Perform live, record mixes on-the-go, or enable... Read more
iDefrag 2.2.8 - Disk defragmentation and...
iDefrag helps defragment and optimize your disk for improved performance. Features include: Supports HFS and HFS+ (Mac OS Extended). Supports case sensitive and journaled filesystems. Supports... Read more
Bookends 12.2.3 - Reference management a...
Bookends is a full-featured bibliography/reference and information-management system for students and professionals. Access the power of Bookends directly from Mellel, Nisus Writer Pro, or MS Word (... Read more

Latest Forum Discussions

See All

Vizzywig 4K (Photography)
Vizzywig 4K 1.0 Device: iOS iPhone Category: Photography Price: $999.99, Version: 1.0 (iTunes) Description: REQUIRES: iOS 7 on iPhone 5S with 32GB or 64GB. (Do not use iOS 8)The world's FIRST mobile 4K video capture, editing and... | Read more »
The Sleeping Prince Review
The Sleeping Prince Review By Jennifer Allen on September 15th, 2014 Our Rating: :: RESTRICTIVE KINGDOM SAVINGUniversal App - Designed for iPhone and iPad The Sleeping Prince looks and feels great to play, but its lack of peril and... | Read more »
It Came From Canada: Terra Battle
In some way or another, most Japanese RPGs owe something to Final Fantasy. But with Terra Battle, the now-common mix of Western medieval fantasy with Eastern anime aesthetic feels earned. After all, its developer, Mistwalker, was founded by the... | Read more »
Five Nights at Freddy’s Review
Five Nights at Freddy’s Review By Rob Thomas on September 15th, 2014 Our Rating: :: FIVE FRIGHTS AT FREDDY'SUniversal App - Designed for iPhone and iPad Can you survive five nights as the new night watchman of Freddy Fazbear’s... | Read more »
Phantom Rift Review
Phantom Rift Review By Nadia Oxford on September 15th, 2014 Our Rating: :: FRIENDLY PHANTOMUniversal App - Designed for iPhone and iPad Despite a snag here and there, Phantom Rift is a well-crafted and imaginative adventure RPG.   | Read more »
Phantom Rift – Tips, Tricks, Strategies,...
Hello, Wanderers: | Read more »
Meet the Newest Character for Temple Run...
Meet the Newest Character for Temple Run 2, from National Geographic Kids’ Action-Adventure Book Posted by Jessica Fisher on September 15th, 2014 [ | Read more »
Battle Riders Review
Battle Riders Review By Jordan Minor on September 15th, 2014 Our Rating: :: UNTWISTED METALUniversal App - Designed for iPhone and iPad BattleRiders has cool car combat, but it could be crazier.   | Read more »
Rapture - World Conquest (Games)
Rapture - World Conquest 1.0.0 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0.0 (iTunes) Description: The End is coming! Bombard the globe with devastating miracles and decimate the enemy civilizations. Guide your... | Read more »
TRANSFORMERS: Age of Extinction Update A...
TRANSFORMERS: Age of Extinction Update Adds New Levels, a New Boss, and Special Events Posted by Jessica Fisher on September 15th, 2014 [ p | Read more »

Price Scanner via MacPrices.net

Free GIMP Professional Grade Graphics App Ver...
The latest 2.8.14 version of the oddly-named GIMP (acronym for: GNU Image Manipulation Program) open source, high-end image editing and creation alternative to Adobe’s Photoshop and refuge from... Read more
10% off iPhone 6 and 6 Plus Otterbox cases
Get 10% off on popular Otterbox iPhone 6 and iPhone 6 Plus cases at MacMall through September 19th. Use code OTTERBOX10 to see the discount. Read more
15-inch MacBook Pros on sale for up to $125 o...
Amazon has the new 2014 15″ Retina MacBook Pros on sale for up to $125 off MSRP including free shipping: - 15″ 2.2GHz Retina MacBook Pro: $1899.99 save $100 - 15″ 2.5GHz Retina MacBook Pro: $2374... Read more
27-inch 3.2GHz iMac on sale for $1698, $101 o...
Abt has the 27″ 3.2GHz iMac on sale for $1698 including free shipping. Their price is $101 off MSRP. Read more
More To Making A Larger iPad Than Expanded Sc...
CNET’s Ross Rubin has posted a thoughtful analysis of prospects for a larger display iPad Pro, noting that Microsoft and Samsung currently have the large-display touchscreen tablet category to... Read more
SwiftKey Keyboard Finally Coming To iPhone An...
At the TechCrunch Disrupt event in San Francisco, Swiftkey unveiled the first details about SwiftKey Keyboard for iPhone, iPad & iPod touch. SwiftKey’s philosophy is that you should be able to... Read more
Save $75 on the 16GB iPad mini with Retina Di...
Best Buy has the 16GB iPad mini with Retina Display on sale for $324.99 on their online store for a limited time. Their price is $75 off MSRP, and it’s the lowest price available for this mini.... Read more
21-inch 1.4GHz iMac on sale for $979, $120 of...
B&H Photo has the new 21″ 1.4GHz iMac on sale for $979.99 including free shipping plus NY sales tax only. Their price is $120 off MSRP. B&H will also include free copies of Parallels Desktop... Read more
Apple restocks refurbished 21-inch 1.4GHz iMa...
The Apple Store has restocked Apple Certified Refurbished 21″ 1.4GHz iMacs for $929 including free shipping plus Apple’s standard one-year warranty. Their price is $170 off the cost of new models,... Read more
13-inch 2.6GHz/256GB Retina MacBook Pro on sa...
Adorama has the 13″ 2.6GHz/256GB Retina MacBook Pro on sale for $1379 including free shipping plus NY & NJ sales tax only. Their price is $120 off MSRP, and it’s the lowest price available for... Read more

Jobs Board

*Apple* Retail - Multiple Positions (US) - A...
Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, you're also the Read more
*Apple* Retail - Multiple Positions (US) - A...
Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, you're also the Read more
*Apple* Retail - Multiple Positions (US) - A...
Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, you're also the Read more
*Apple* Retail - Multiple Positions (US) - A...
Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, you're also the Read more
*Apple* Retail - Multiple Positions (US) - A...
Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, you're also the Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.