锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久亚洲私人国产精品,国产AV日韩A∨亚洲AV电影 ,亚洲AV无码精品色午夜果冻不卡http://m.tkk7.com/jiangshachina/category/33265.html鍚屾槸Java鐖卞ソ鑰咃紝鐩擱綍蹇呮浘鐩歌瘑錛?lt;br>    a cup of Java, cheers!zh-cnTue, 16 Jul 2013 07:41:18 GMTTue, 16 Jul 2013 07:41:18 GMT60Custom Layout Manager: PyramidLayout(鍘?http://m.tkk7.com/jiangshachina/archive/2012/07/15/383156.htmlSha JiangSha JiangSun, 15 Jul 2012 14:14:00 GMThttp://m.tkk7.com/jiangshachina/archive/2012/07/15/383156.htmlhttp://m.tkk7.com/jiangshachina/comments/383156.htmlhttp://m.tkk7.com/jiangshachina/archive/2012/07/15/383156.html#Feedback3http://m.tkk7.com/jiangshachina/comments/commentRss/383156.htmlhttp://m.tkk7.com/jiangshachina/services/trackbacks/383156.html
Custom Layout Manager: PyramidLayout
    宸叉湁澶鍏充簬鑷畾涔夐儴灞綆$悊鍣ㄧ殑鏂囩珷浜嗐傛湰鏂囦粎鏄竴綃囧涔犵瑪璁幫紝鎻忚堪浜嗗浣曞疄鐜頒竴縐嶅儚鍫嗛噾瀛楀浼肩殑閮ㄥ眬綆$悊鍣紝寰堢畝鍗曪紝涔熸湁鐐瑰効鎰忔濓紝鍙兘浣犱篃浼氭劅鍏磋叮鐨勩?2012.07.17鏈鍚庢洿鏂?   

    I have developed Swing application for several years, although I'm not professional GUI developer, I'm shamed of never creating any custom layout manager. Maybe the existing Swing layout managers are too powerful to create new ones. At least, GridBagLayout is powerful enough for my real works. And we have much more flexible GroupLayout and SpringLayout, of course, both of them are too complex, in fact I never use them directly. However I indirectly take advantage of GroupLayout due to using NetBeans' GUI designer Matisse.

1. Layout Manager basics
    Let's start with some layout manager foundation. Before this time I learn to customize layout, I always think layout manager is very mysterious. Layout is like a magic player that put a variety of components to right positions in containers. I haven't browsed any code of any layout, event the simplest one. That's why I think layout is mystery. But it's simple for me now.
    Generally, all of layout implements one or both of LayoutManager and LayoutManager2 interfaces. LayoutManager2 is LayoutManager's sub-interface, then if someone implements LayoutManager2 that means it really implements LayoutManager. Mostly all modern layouts implements LayoutManager2.
    Interface LayoutManager defines the basic methods must be implemented by every layout, all of them are intuitional: add new component--addLayoutComponent(); remove component--removeLayoutComponent(); calculate preferred size--preferredLayoutSize(); calculate minimum size--minimumLayoutSize(); how to layout the components--layoutContainer(). Absolutely, the layoutContainer() method is essential, you must instruct the parent container how to allocate space(bounds) for every component.
    The extension interface LayoutManager2 introduces more methods that if you have to: support constraints--addLayoutComponent(Component, Object); specify maximum size--maximumLayoutSize(); specify alignment--getLayoutAlignmentX() and getLayoutAlignmentY(); destroy specific caches or reset some variables when invaliding container--invalidateLayout().

2. PyramidLayout
    Now let's feature a simple and funny layout manager--PyramidLayout. The layout allows container to add components like building a Pyramid, as shown as the image below,

    As the above, PyramidLayout puts the first component on the bottom, then puts the second on top of the first, but its bounds is smaller, ... It looks like a Pyramid, doesn't it? Here is the full codes,
public class PyramidLayout implements LayoutManager2 {

    
private List<Component> comps = new LinkedList<Component>();

    
public void addLayoutComponent(final Component comp,
            
final Object constraints) {
        
synchronized (comp.getTreeLock()) {
            comps.add(comp);
        }
    }

    
public void addLayoutComponent(final String name, final Component comp) {
        addLayoutComponent(comp, null);
    }

    
public void removeLayoutComponent(final Component comp) {
        
synchronized (comp.getTreeLock()) {
            comps.remove(comp);
        }
    }

    
public float getLayoutAlignmentX(final Container target) {
        
return 0.5F;
    }

    
public float getLayoutAlignmentY(final Container target) {
        
return 0.5F;
    }

    
public void invalidateLayout(final Container target) {
        System.out.println();
    }

    
public Dimension preferredLayoutSize(final Container parent) {
        
synchronized (parent.getTreeLock()) {
            Insets insets = parent.getInsets();
            
int width = insets.left + insets.right;
            
int height = insets.top + insets.bottom;
            
if (comps.size() == 0) {
                
return new Dimension(width, height);
            }

            Dimension size = comps.get(0).getPreferredSize();
            width += size.width;
            height += size.height;

            
return new Dimension(width, height);
        }
    }

    
public Dimension minimumLayoutSize(final Container parent) {
        
synchronized (parent.getTreeLock()) {
            Insets insets = parent.getInsets();
            
int width = insets.left + insets.right;
            
int height = insets.top + insets.bottom;
            
if (comps.size() == 0) {
                
return new Dimension(width, height);
            }

            Dimension size = comps.get(0).getMinimumSize();
            width += size.width;
            height += size.height;

            
return new Dimension(width, height);
        }
    }

    
public Dimension maximumLayoutSize(final Container target) {
        
return new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE);
    }

    
public void layoutContainer(final Container parent) {
        
synchronized (parent.getTreeLock()) {
            Dimension parentSize = parent.getSize();
            
int compsCount = comps.size();
            Dimension step = new Dimension(parentSize.width / (2 * compsCount),
                    parentSize.height / (2 * compsCount));

            
for (int i = 0; i < compsCount; i++) {
                Component comp = comps.get(i);
                comp.setBounds(calcBounds(parentSize, step, i));
                parent.setComponentZOrder(comp, compsCount - i - 1);
            }
        }
    }

   
private Rectangle calcBounds(Dimension parentSize, Dimension step, int index) {
        
int x = step.width * index;
        
int y = step.height * index;
        
int width = parentSize.width - step.width * 2 * index;
        
int height = parentSize.height - step.height * 2 * index;
        
return new Rectangle(x, y, width, height);
    }
}
    Collection instance "comps" manages all of components, in this case, I take a LinkedList object to add and remove UI components. The layout doesn't concern any constraint, so the two addLayoutComponent() methods have the same actions. Please see the codes for details.
    As aforementioned, layoutContainer() method really takes charge of layouting the components. The key work is allocating space for each component, namely, specifying the bounds. Calculating bounds values just applies the simplest arithmetic operations.
    According to the intention, the bottom component fills the whole parent container, so it determines the preferred and the minimum sizes. For details, please take a look at methods preferredLayoutSize() and minimumLayoutSize(). Since the layout manager doesn't take care of the maximum size, the maximumLayoutSize() method simply returns a constant value.


Sha Jiang 2012-07-15 22:14 鍙戣〃璇勮
]]>
鏋勫緩涓嶈鍒欑獥浣?鍘?http://m.tkk7.com/jiangshachina/archive/2011/05/31/351369.htmlSha JiangSha JiangTue, 31 May 2011 12:46:00 GMThttp://m.tkk7.com/jiangshachina/archive/2011/05/31/351369.htmlhttp://m.tkk7.com/jiangshachina/comments/351369.htmlhttp://m.tkk7.com/jiangshachina/archive/2011/05/31/351369.html#Feedback0http://m.tkk7.com/jiangshachina/comments/commentRss/351369.htmlhttp://m.tkk7.com/jiangshachina/services/trackbacks/351369.html
鏋勫緩涓嶈鍒欑獥浣?/span>
鍦ㄥ紑鍙戜竴涓柊嫻井鍗歋wing瀹㈡埛绔殑榪囩▼涓笇鏈涜兘灞曠幇涓嶈鍒欑殑紿椾綋鐣岄潰錛屽師鏉?a >JDK 6 update 10鎻愪緵浜嗗垱寤烘寚瀹氬艦鐘剁獥浣撶殑鐗規э紝綆鍗曟槗鐢紝璁頒簬姝ゅ銆?2010.05.31鏈鍚庢洿鏂?

Java浠?a >JDK 6 update 10寮濮嬪皢鍐呭緩鏀寔鏋勫緩鎸囧畾褰㈢姸鐨勭獥浣擄紝綾籧om.sun.awt.AWTUtilities涓殑鏂規硶setWindowShape浼氭牴鎹笉鍚岀殑Shape瀹炵幇鍘繪瀯閫犵浉搴斿艦鐘剁殑紿椾綋銆侫WTUtilities綾繪槸鏀懼湪SUN鐨勫寘涓紝鍦ㄤ嬌鐢ㄨ鏂規硶鏃跺簲璇ラ氳繃鍙嶅皠鍘昏繘琛岃皟鐢紝濡備笅浠g爜鎵紺猴紝
Class<?> clazz = Class.forName("com.sun.awt.AWTUtilities");
Method method 
= clazz.getMethod("setWindowShape", Window.class, Shape.class);

1. 鍒涘緩姝e父紿椾綋
鍏堝垱寤轟竴涓畝鍗曠殑鐣岄潰錛屽畠浣跨敤BorderLayout錛屽湪鍏朵腑瀹夋斁5涓狫Button錛屽涓嬩唬鐮佹墍紺猴紝
public class ShapedFrame extends JFrame {

    
private static final long serialVersionUID = -2291343874280454383L;

    
private JButton centerButton = new JButton("Center");

    
public ShapedFrame() {
        
super("Shaped Frame");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        initUI();
    }

    
private void initUI() {
        Container container 
= getContentPane();
        container.setLayout(
new BorderLayout());

        container.add(
new JButton("TOP"), BorderLayout.PAGE_START);
        container.add(
new JButton("RIGHT"), BorderLayout.LINE_END);
        container.add(
new JButton("BOTTOM"), BorderLayout.PAGE_END);
        container.add(
new JButton("LEFT"), BorderLayout.LINE_START);
        container.add(centerButton, BorderLayout.CENTER);
    }

    
public static void main(String[] args) {
        SwingUtilities.invokeLater(
new Runnable() {

            @Override
            
public void run() {
                ShapedFrame frame 
= new ShapedFrame();
                frame.setSize(
new Dimension(400300));
                frame.setUndecorated(
true);
                setAtCenter(frame);
                frame.setVisible(
true);
            }
        });
    }

    
// 灝哤indow緗簬灞忓箷姝d腑
    private static void setAtCenter(Window window) {
        Dimension screenSize 
= Toolkit.getDefaultToolkit().getScreenSize();
        window.setLocation((screenSize.width 
- window.getWidth()) / 2,
                (screenSize.height 
- window.getHeight()) / 2);
    }
}

鎵ц涓婅堪紼嬪簭鐨勬晥鏋滃涓嬪浘鎵紺猴紝


2. 鍒涘緩涓嶈鍒欑獥浣?
鍩轟簬涓婅堪紼嬪簭鍒涘緩涓嶈鍒欑獥浣擄紝浣挎暣涓獥浣撴濂界己澶辨帀RIGHT JButton鎵鍦ㄧ殑鍖哄煙錛屽涓嬩唬鐮佹墍紺猴紝
public class ShapedFrame extends JFrame {

    
private static final long serialVersionUID = -2291343874280454383L;

    
private static Method method = null;

    
static {
        
try {
            Class
<?> clazz = Class.forName("com.sun.awt.AWTUtilities");
            method 
= clazz.getMethod("setWindowShape", Window.class, Shape.class);
        } 
catch (Exception e) {
            e.printStackTrace();
        }
    }

    
private JButton centerButton = new JButton("Center");

    
public ShapedFrame() {
        
super("Shaped Frame");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        initUI();
        addComponentListener(componentListener);
    }

    
private void initUI() {
        Container container 
= getContentPane();
        container.setLayout(
new BorderLayout());

        container.add(
new JButton("TOP"), BorderLayout.PAGE_START);
        container.add(
new JButton("RIGHT"), BorderLayout.LINE_END);
        container.add(
new JButton("BOTTOM"), BorderLayout.PAGE_END);
        container.add(
new JButton("LEFT"), BorderLayout.LINE_START);
        container.add(centerButton, BorderLayout.CENTER);
    }

    
private ComponentListener componentListener = new ComponentAdapter() {

        @Override
        
public void componentResized(ComponentEvent evt) { // 褰揢I緇勪歡(JFrame)鐨勫昂瀵稿彂鐢熸敼鍙樻椂錛岃皟鐢ㄨ鏂規硶
            Rectangle frameRect = getBounds();
            Rectangle spaceRect 
= centerButton.getBounds();

            Point o1 
= new Point(00);
            Point o2 
= new Point(frameRect.width, 0);
            Point o3 
= new Point(frameRect.width, frameRect.height);
            Point o4 
= new Point(0, frameRect.height);

            Point i1 
= new Point(spaceRect.x + spaceRect.width, spaceRect.y);
            Point i2 
= new Point(frameRect.width, spaceRect.y);
            Point i3 
= new Point(frameRect.width, spaceRect.y
                    
+ spaceRect.height);
            Point i4 
= new Point(spaceRect.x + spaceRect.width, spaceRect.y + spaceRect.height);

            
int[] xpoints = new int[] { o1.x, o2.x, i2.x, i1.x, i4.x, i3.x, o3.x, o4.x };
            
int[] ypoints = new int[] { o1.y, o2.y, i2.y, i1.y, i4.y, i3.y, o3.y, o4.y };
            
int npoints = 8
            
// 鏋勫緩涓涓叚杈瑰艦錛屽皢RIGHT JButton鎵澶勭殑浣嶇疆絀虹己鍑烘潵
            Shape shape = new Polygon(xpoints, ypoints, npoints);

            setWindowShape(ShapedFrame.
this, shape);
        }
    };

    
// 璁劇疆Window鐨勫艦鐘?/span>
    private static void setWindowShape(Window window, Shape shape) {
        
try {
            method.invoke(
null, window, shape);
        } 
catch (Exception e) {
            e.printStackTrace();
        }
    }

    
public static void main(String[] args) {
        SwingUtilities.invokeLater(
new Runnable() {

            @Override
            
public void run() {
                ShapedFrame frame 
= new ShapedFrame();
                frame.setSize(
new Dimension(400300));
                frame.setUndecorated(
true);
                setAtCenter(frame);
                frame.setVisible(
true);
            }
        });
    }

    
// 灝哤indow緗簬灞忓箷姝d腑
    private static void setAtCenter(Window window) {
        Dimension screenSize 
= Toolkit.getDefaultToolkit().getScreenSize();
        window.setLocation((screenSize.width 
- window.getWidth()) / 2,
                (screenSize.height 
- window.getHeight()) / 2);
    }
}

鎵ц涓婅堪紼嬪簭鍚庯紝浼氭湁濡備笅鍥炬墍紺虹殑鏁堟灉錛?br />



Sha Jiang 2011-05-31 20:46 鍙戣〃璇勮
]]>
浣犳墍涓嶇煡閬撶殑浜斾歡浜嬫儏--鏀硅繘Swing(璇?http://m.tkk7.com/jiangshachina/archive/2010/10/25/336125.htmlSha JiangSha JiangMon, 25 Oct 2010 14:23:00 GMThttp://m.tkk7.com/jiangshachina/archive/2010/10/25/336125.htmlhttp://m.tkk7.com/jiangshachina/comments/336125.htmlhttp://m.tkk7.com/jiangshachina/archive/2010/10/25/336125.html#Feedback0http://m.tkk7.com/jiangshachina/comments/commentRss/336125.htmlhttp://m.tkk7.com/jiangshachina/services/trackbacks/336125.html闃呰鍏ㄦ枃

Sha Jiang 2010-10-25 22:23 鍙戣〃璇勮
]]>
鍒╃敤SwingX涓嶵imingFramework瀹炵幇娣″叆娣″嚭(鍘?http://m.tkk7.com/jiangshachina/archive/2009/09/28/296709.htmlSha JiangSha JiangMon, 28 Sep 2009 01:46:00 GMThttp://m.tkk7.com/jiangshachina/archive/2009/09/28/296709.htmlhttp://m.tkk7.com/jiangshachina/comments/296709.htmlhttp://m.tkk7.com/jiangshachina/archive/2009/09/28/296709.html#Feedback0http://m.tkk7.com/jiangshachina/comments/commentRss/296709.htmlhttp://m.tkk7.com/jiangshachina/services/trackbacks/296709.html鍒╃敤SwingX涓嶵imingFramework瀹炵幇娣″叆娣″嚭
鏈枃浣跨敤SwingX涓?a >TimingFramework灞曠ず浜嗗浣曞疄鐜版貳鍏ユ貳鍑烘晥鏋滐紝紼嬪簭綆媧佸疄鐢紝甯屾湜瀵瑰ぇ瀹惰兘鏈夋墍鍔╃泭銆?2009.09.28鏈鍚庢洿鏂?

鍦⊿wing涓嬌鐢?a >AlphaComposite璁劇疆鐣岄潰鐨勫崐閫忔槑搴︼紝鍐嶉厤鍚?a >javax.swing.Timer鍙互姣旇緝瀹規槗鍦板疄鐜版貳鍏ユ貳鍑烘晥鏋溿備絾闇瑕佹垜浠戶鎵垮叿浣撶殑UI緇勪歡錛屽茍閲嶅啓瀹冪殑paintComponent鏂規硶錛屽悓鏃惰繕瑕佷負Timer鎻愪緵涓涓狝ctionListener鐨勫疄鐜般傝繖浜涘浜庣▼搴忓憳鏉ヨ錛屾樉寰楁湁浜涗箯鍛熾?br />     騫歌繍鍦版槸錛孲wingX涓殑JXPanel(JPanel鐨勫瓙綾?閫氳繃setAlpha鏂規硶鏉ヨ緗崐閫忔槑搴︼紝JXPanel涓殑鎵鏈塙I緇勪歡閮藉彲闅忎箣鍗婇忔槑鍖栥俆imingFramework鎻愪緵鐨凙nimator鍙互甯姪鎴戜滑闈炵嚎鎬у湴璁劇疆JXPanel涓殑alpha鍊箋傛晠錛屾垜浠湪瀹炵幇娣″叆娣″嚭鏃訛紝鍙互浣跨敤JXPanel鏉ユ浛浠Panel錛岀敤Animator鏉ユ浛浠imer銆?br />

    涓嬮潰鏄竴涓潪甯哥畝鍗曠殑紺轟緥錛岃紺轟緥鍦ㄤ竴涓嬌鐢–ardLayout鐨凧Panel--cardPanel錛屼腑鍙﹀寘鍚簡涓や釜JXPanel--panelA鍜宲anelB錛岃繖涓や釜瀛愬鍣ㄤ腑鍙堝垎鍒湁涓涓狫Button--buttonA鍜宐uttonB銆傚綋鐐瑰嚮buttonA鏃訛紝灝嗘貳鍏ユ樉紺簆anelB錛涘綋鐐瑰嚮buttonB鏃訛紝灝嗘貳鍏ユ樉紺簆anelA銆?br />
 1 public class FadingCardDemo extends JFrame {
 2 
 3     private static final long serialVersionUID = 8005909309849021746L;
 4 
 5     private String CARD_A = "CARD_A";
 6     private String CARD_B = "CARD_B";
 7 
 8     private JPanel cardPanel = null;
 9     private JXPanel panelA = null;
10     private JXPanel panelB = null;
11     private JButton buttonA = null;
12     private JButton buttonB = null;
13 
14     public FadingCardDemo() {
15         super("FadingButton Demo");
16         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
17         initUI();
18     }
19 
20     private void initUI() {
21         cardPanel = new JPanel(new CardLayout());
22 
23         buttonA = new JButton("Button A");
24         buttonA.addActionListener(actionHandler);
25         panelA = new JXPanel(new BorderLayout());
26         panelA.add(buttonA, BorderLayout.CENTER);
27         cardPanel.add(panelA, CARD_A);
28 
29         buttonB = new JButton("Button B");
30         buttonB.addActionListener(actionHandler);
31         panelB = new JXPanel(new BorderLayout());
32         panelB.add(buttonB, BorderLayout.CENTER);
33         cardPanel.add(panelB, CARD_B);
34 
35         Container container = getContentPane();
36         container.setLayout(new BorderLayout());
37         container.add(cardPanel, BorderLayout.CENTER);
38     }
39 
40     private ActionListener actionHandler = new ActionListener() {
41 
42         private Animator animator = null;
43 
44         public void actionPerformed(ActionEvent e) {
45             if (animator == null) {
46                 animator = new Animator(2000);
47                 animator.setDeceleration(0.2F);
48                 animator.setAcceleration(0.4F);
49             } else if (animator.isRunning()) {
50                 animator.stop();
51             }
52 
53             JButton button = (JButton) e.getSource();
54             if (button == buttonA) {
55                 animator.addTarget(new PropertySetter(panelB, "alpha"1.0F));
56                 panelB.setAlpha(0.1F);
57                 ((CardLayout) cardPanel.getLayout()).show(cardPanel, CARD_B);
58             } else if (button == buttonB) {
59                 animator.addTarget(new PropertySetter(panelA, "alpha"1.0F));
60                 panelA.setAlpha(0.1F);
61                 ((CardLayout) cardPanel.getLayout()).show(cardPanel, CARD_A);
62             }
63             animator.start();
64         }
65     };
66 
67     public static void main(String[] args) {
68         SwingUtilities.invokeLater(new Runnable() {
69             public void run() {
70                 FadingCardDemo demo = new FadingCardDemo();
71                 demo.setSize(new Dimension(400300));
72                 demo.setVisible(true);
73             }
74         });
75     }
76 }


Sha Jiang 2009-09-28 09:46 鍙戣〃璇勮
]]>
涓涓畝鍗曠殑CheckBox Tree瀹炵幇(鍘?http://m.tkk7.com/jiangshachina/archive/2009/08/05/289996.htmlSha JiangSha JiangWed, 05 Aug 2009 13:10:00 GMThttp://m.tkk7.com/jiangshachina/archive/2009/08/05/289996.htmlhttp://m.tkk7.com/jiangshachina/comments/289996.htmlhttp://m.tkk7.com/jiangshachina/archive/2009/08/05/289996.html#Feedback3http://m.tkk7.com/jiangshachina/comments/commentRss/289996.htmlhttp://m.tkk7.com/jiangshachina/services/trackbacks/289996.html涓涓畝鍗曠殑CheckBox Tree瀹炵幇
CheckBox Tree鏄竴涓崄鍒嗗父鐢ㄧ殑UI緇勪歡錛屽畠鑳戒嬌鐢ㄦ埛鏂逛究鍦版寜鐗瑰畾瑙勫垯鍕鵑夋爲涓殑鑺傜偣銆?/span>鏈枃瀹炵幇浜嗕竴縐嶇畝鍗曠殑Checking瑙勫垯錛氬綋鍕鵑変簡鏌愯妭鐐瑰悗錛岃鑺傜偣鐨勬墍鏈変笅綰ц妭鐐瑰叏閮ㄨ鍕鵑夛紱褰撳彇娑堝嬀閫夋煇鑺傜偣鍚庯紝璇ヨ妭鐐圭殑鎵鏈変笅綰ц妭鐐瑰叏閮ㄨ鍙栨秷鍕鵑夈?2009.08.05鏈鍚庢洿鏂?

瀹炵幇CheckBox Tree鐨勫父鐢ㄦ柟娉曪紝灝辨槸浣跨敤JCheckBox浣滀負JTree鐨凾reeCellRendrer錛屽茍涓旈渶瑕佸疄鐜扮壒瀹氱殑Checking瑙勫垯鏉ュ嬀閫?鍙栨秷鍕鵑塁heckBox銆?br />
1. 鏍戣妭鐐?/span>
DefaultMutableTreeNode鏄渶甯哥敤鐨凾reeNode瀹炵幇錛屾澶勬垜浠皢鎵╁睍榪欎竴瀹炵幇--CheckBoxTreeNode錛屽鍔犱竴涓睘鎬?span style="color: #2000ff;">isChecked
錛岀敤浜庢爣璇嗚鑺傜偣鏄惁瑕佽鍕鵑変笂銆傝綾葷殑瀹屾暣浠g爜濡備笅鎵紺猴細
public class CheckBoxTreeNode extends DefaultMutableTreeNode {

       
private static final long serialVersionUID = 3195314943599939279L;

       
private boolean isChecked = false;

       
public CheckBoxTreeNode(Object userObject) {
               
super(userObject);
       }

       
public boolean isChecked() {
               
return isChecked;
       }

       
public void setChecked(boolean isChecked) {
               
this.isChecked = isChecked;
       }
}

2. 娓叉煋鍣?/span>
濡傛湰鏂囧紑澶存墍榪幫紝鎴戜滑灝嗕嬌鐢↗CheckBox浣滀負鏍戣妭鐐瑰睍鐜板艦寮忕殑娓叉煋鍣紝鍚屾椂紜畾瀵硅妭鐐硅繘琛屽嬀閫夋垨鍙栨秷鍕鵑夌殑瑙勫垯銆侰heckBoxTreeCellRenderer鏈韓鍗蟲槸涓涓狫CheckBox錛岄偅涔堝湪瀹炵幇getTreeCellRendererComponent鏂規硶鏃訛紝鍙畝鍗曞湴榪斿洖瀹冭嚜宸辯殑瀹炰緥鍗沖彲錛岃屽浜庡嬀閫夋垨鍙栨秷鍕鵑夌殑鏉′歡錛屽垯鐢盋heckBoxTreeNode涓殑isChecked灞炴ф潵紜畾錛屽畬鏁寸殑浠g爜濡備笅鎵紺猴細
public class CheckBoxTreeCellRenderer extends JCheckBox implements TreeCellRenderer {

       
private static final long serialVersionUID = -6432020851855339311L;

       
public CheckBoxTreeCellRenderer() {
               setOpaque(
false);
       }

       
public Component getTreeCellRendererComponent(JTree tree, Object value,
                       
boolean selected, boolean expanded, boolean leaf, int row,
                       
boolean hasFocus) {
               CheckBoxTreeNode node 
= ((CheckBoxTreeNode) value); // 鑾峰彇鏍戣妭鐐瑰璞°?/span>
               setText(node.toString()); // 璁劇疆CheckBox鎵灞曠ず鐨勬枃鏈?br />
               
// 褰撴爲鑺傜偣琚緗負鍕鵑夋椂錛屽垯璇ヨ妭鐐瑰搴旂殑CheckBox琚嬀閫変笂錛涘惁鍒欙紝鍙栨秷鍕鵑夈?/span>
               if (node.isChecked()) {
                       setSelected(
true);
                       setForeground(Color.BLUE);
               } 
else {
                       setSelected(
false);
                       setForeground(tree.getForeground());
               }
               
return this;
       }
}

3. 鏍?/span>
姝ゅ瀵笿Tree榪涜鎵╁睍錛屽垱寤篊heckBoxTree錛岃綾誨彧鏄負JTree娣誨姞浜嗕竴涓狹ouseListener錛屼互渚﹀惉榧犳爣閫変腑鏍戣妭鐐瑰悗錛屽浣曡緗嬀閫夋爣璁幫紝騫墮噸緇樻爲銆?br />
public class CheckBoxTree extends JTree {

       
private static final long serialVersionUID = -217950037507321241L;

       
public CheckBoxTree(TreeModel newModel) {
               
super(newModel);
               addCheckingListener();
       }

       
private void addCheckingListener() {
               addMouseListener(
new MouseAdapter() {

                       @Override
                       
public void mousePressed(MouseEvent e) {
                               
int row = getRowForLocation(e.getX(), e.getY());
                               TreePath treePath 
= getPathForRow(row);
                               
if (treePath == null) {
                                       
return;
                               }

                               CheckBoxTreeNode node 
= ((CheckBoxTreeNode) treePath.getLastPathComponent());
                               
boolean checking = !node.isChecked(); // 濡傛灉璇ヨ妭鐐瑰凡琚嬀閫変笂錛屽垯姝ゆ灝嗗彇娑堝嬀閫夛紱鍙嶄箣錛屼害鍙嶃?/span>
                               checkNode(node, checking);

                               repaint(); 
// 閲嶇粯鏁存5鏍戙?/span>
                       }

                       
// 閫掑綊鍦板嬀閫夋垨鍙栨秷鍕鵑夋寚瀹氳妭鐐瑰強鍏舵墍鏈変笅綰ц妭鐐圭殑CheckBox銆?/span>
                       private void checkNode(CheckBoxTreeNode node, boolean checking) {
                               node.setChecked(checking);
                               
if (!node.isLeaf()) {
                                       Enumeration
<CheckBoxTreeNode> children = node.children();
                                       
while (children.hasMoreElements()) {
                                               checkNode(children.nextElement(), checking);
                                       }
                               }
                       }
               });
       }
}
涓婅堪紼嬪簭鏈変袱涓叧閿偣錛?. 璁劇疆褰撳墠鑺傜偣鍙婂叾瀛愯妭鐐圭殑鍕鵑夋爣璁?-checkNode錛?. 閲嶇粯鏍?-repaint銆傝皟鐢╮epaint鏂規硶瀵規爲榪涜緇樺埗鏃訛紝鏂規硶TreeCellRenderer.getTreeCellRendererComponent灝變細琚皟鐢紝姝ゆ椂紼嬪簭灝變細鏍規嵁checkNode鏂規硶璁懼畾鐨?span style="color: #2000ff;">isChecked鏉ュ嬀閫夋垨鍙栨秷鍕鵑夊搴旂殑鏍戣妭鐐笴heckBox銆傜畝璦涔嬶紝灝辨槸鍏堣緗爲鍨嬫暟鎹腑鐨勫嬀閫夋爣璁幫紝鐒跺悗娓叉煋鍣ㄥ啀鏍規嵁榪欎簺鏍囪鏉ユ覆鏌揅heckBox銆?br />

Sha Jiang 2009-08-05 21:10 鍙戣〃璇勮
]]>
Java Store, Q&A(璇?http://m.tkk7.com/jiangshachina/archive/2009/07/05/285528.htmlSha JiangSha JiangSun, 05 Jul 2009 01:48:00 GMThttp://m.tkk7.com/jiangshachina/archive/2009/07/05/285528.htmlhttp://m.tkk7.com/jiangshachina/comments/285528.htmlhttp://m.tkk7.com/jiangshachina/archive/2009/07/05/285528.html#Feedback0http://m.tkk7.com/jiangshachina/comments/commentRss/285528.htmlhttp://m.tkk7.com/jiangshachina/services/trackbacks/285528.htmlJava Store, Q&A
鍦ㄤ粖騫寸殑JavaOne涓紝姣旇緝閲嶈鐨勮棰樹箣涓灝辨槸Java搴旂敤鍟嗗簵銆傜洰鍓嶈繕娌℃満浼氫翰韜綋浼氫竴涓嬭繖涓晢搴楋紝浣嗘垜鑷沖皯璁や負Java搴旂敤鍟嗗簵涓哄箍澶ava紼嬪簭鍛樻彁渚涗簡涓涓柊鐨勫睍紺鴻嚜鎴戠殑騫沖彴銆侾lease show yourself! (2009.07.05鏈鍚庢洿鏂?

Java Store鏄疛avaOne涓渶閲嶅ぇ鐨勬秷鎭箣涓銆傛垜鏍煎涓轟箣楠勫偛錛屽洜涓哄湪榪囧幓鐨勫嚑涓湀涓垜涓鐩寸瀵嗗湴涓哄叾宸ヤ綔銆傜敱浜庤繖涓娑堟伅錛屾垜鏀跺埌浜嗕竴澶у爢鍏充簬璇ュ晢搴楃殑闂錛屼互鍙婂浣曞皢瀹冧笌Java鐢熸佺郴緇熶腑鐨勫叾瀹冮儴鍒嗙浉鍏寵仈銆傚嚭浜庡宸叉瀬浣崇殑FAQ鐨勮ˉ鍏咃紝鎴戞兂搴旇鍐嶅洖絳斾竴浜涢棶棰樸?br />
綆綰︽鎷竴涓嬩綘鎵瀹e竷鐨勬秷鎭?/strong>
鎴戜滑宸茬粡鍙戝竷浜咼ava Store鐨勭鏈塀eta鐗堬紝鏄竴涓闈㈢殑瀹㈡埛绔簲鐢紝瀹冨厑璁稿ぇ瀹舵祻瑙堝茍璐拱妗岄潰Java搴旂敤錛涜繕鏈変竴涓狫ava浠撳簱鐨勫紑鏀綛eta鐗堬紝涓轟簡鍒嗗彂搴旂敤紼嬪簭錛屽紑鍙戣呬滑鍙皢榪欎簺搴旂敤紼嬪簭涓婁紶鍒拌繖涓粨搴撲腑銆傜幇鍦ㄤ綘灝卞彲浠ョ櫥褰曞茍嫻撳害涓涓嬭繖涓?a >鍟嗗簵鍜?a >浠撳簱銆傜洰鍓嶏紝榪欎釜鍟嗗簵鍜屼粨搴撳彧閽堝緹庡浗鐢ㄦ埛錛屽緢蹇皢鏈夋洿澶氱殑鍥藉鑳藉浣跨敤銆?br />
鎴戝彲浠ヤ嬌鐢ㄩ櫎JavaFX涔嬪鐨勫叾瀹冭璦鏉ュ仛鐢ㄤ簬Java Store鐨勭▼搴忓悧錛?/strong>
鏄殑錛佷笉浠呬粎鏄疛ava鍜孞avaFX錛屾墍鏈夊熀浜嶫VM鐨勮璦閮芥槸鍏佽鐨勩傝浣忥紝鏈緇堢敤鎴峰茍涓嶅叧蹇冧綘鐨勫簲鐢ㄦ槸鐢ㄤ粈涔堣璦鍐欑殑銆備粬浠彧鍏沖績浣犳墍鍋氱殑搴旂敤鏄湁鐢ㄧ殑錛岀湅璧鋒潵鍜岀敤璧鋒潵閮藉緢濂姐?br />
鍟嗗簵涓殑搴旂敤紼嬪簭鏈夊摢浜涢檺鍒訛紵
鏌ョ湅FAQ錛屽彲浠ュ緱鍒板叏閮ㄧ殑緇嗚妭錛屼絾綆瑕佺殑鍥炵瓟鏄細浠諱綍鐨凧VM璇彞錛涘繀欏婚潰鍚戞秷璐硅咃紱(鐩墠)灝忎簬50M錛涘繀欏繪槸鏈鍚嶏紝鎴栦嬌鐢ㄦ湁鏁堣璇佺殑絳懼悕銆傚湪璇ュ晢搴楀晢鐢ㄤ箣鍓嶏紝鎵鏈夌殑搴旂敤閮芥槸鍏嶈垂鐨勶紝鍟嗙敤涔嬪悗浣犲氨闇瑕佷粯璐廣傛澶勫寘鍚殑緇嗚妭寰堝皯錛屼絾榪欎簺閮芥槸鍩烘湰鐨勩?br />
浣曟椂鎵嶅厑璁告垜璐╁崠搴旂敤紼嬪簭錛?/strong>
鎴戜滑灝嗗敖蹇傚晢搴楄繕鏈紑寮犮備絾鏈緇堬紝浣犱笉浼氭嫢鏈変竴涓揣鏋剁┖絀哄涔熺殑鍟嗗簵銆傝繖灝辨槸涓轟粈涔堟垜浠緇欎綘浠紝寮鍙戣咃紝鏃墮棿鍘誨噯澶囧ソ浣犱滑鐨勫簲鐢ㄣ傚綋鎴戜滑鍚戝晢鐢ㄥ紑鏀捐繖涓晢搴楁椂錛屼綘灝辮兘澶熸爣涓婁環鏍煎茍寮濮嬪敭鍗栦簡銆?br />
欏懼灝嗗浣曟壘鍒版垜鐨勫簲鐢ㄧ▼搴忥紵
浣犲湪JavaOne澶т細涓婄湅鍒扮殑妗岄潰瀹㈡埛绔彧鏄涓涓増鏈傛垜浠凡鍦ㄥ姫鍔涘伐浣滐紝鍚戝晢搴楀姞涓婃柊鐨勭壒鎬э紝榪欏皢浣垮緱欏懼浠壘鍒頒綘鐨勫簲鐢ㄣ傚皢鏈夎濡傛煡鎵撅紝榪囨護錛屾帓搴忓拰璇勮涔嬬被鐨勬柊鐗規с傛渶鍚庯紝Java Store灝嗕細闅廕ava鍙戝竷錛岃繖灝變嬌寰椾綘鐨勫簲鐢ㄨ兘琚繎鐧句竾浜哄彂鐜般?br />
縐誨姩鍜孴V搴旂敤灝嗕細鎬庢牱錛?/strong>
Java Store瀹為檯鍖呭惈涓や釜鏂歸潰銆傚簵闈㈡槸涓涓闈㈠鎴風紼嬪簭錛屽畠浣夸綘鑳藉璐拱妗岄潰搴旂敤銆傝繕鏈変竴涓狫ava Warehouse錛岃繖鏄綘錛屽嵆寮鍙戣咃紝瀛樻斁寰呭敭搴旂敤紼嬪簭鐨勫湴鏂廣傚湪鏈潵錛岃繕浼氬鍔犻拡瀵圭數瑙嗗拰縐誨姩搴旂敤鐨勫簵闈紝鍙兘浼歝arrier branded銆備綘鎵瀛樻斁搴旂敤紼嬪簭鐨凧ava Warehouse灝嗕負鎵鏈夌殑榪欎簺搴楅潰鎻愪緵鏈嶅姟銆傛闈㈠簲鐢ㄥ彧鏄護浜烘縺鍔ㄧ殑絎竴姝ョ艦浜嗐?br />
鐜板湪鍟嗗簵閲岄兘鍝簺搴旂敤浜嗭紵浠栦滑鏉ヨ嚜浜庝綍澶勶紵
鎴戜滑涓庤澶氫紮浼村叕鍙鎬竴鍚屽伐浣滀負榪欎釜鍟嗗簵鏋勫緩鏂扮殑搴旂敤錛屼互鍙婁慨鏀瑰凡鏈夌殑搴旂敤紼嬪簭銆傛垜涓漢鐨勬渶鐖辨槸Astronomy Picture of the Day錛岀敱浣嶄簬淇勫嫆鍐堝窞Eugene鐨勪竴涓悕涓?a >Concentric Sky鐨勫叕鍙稿垱寤虹殑銆傝繖涓▼搴忎笌NASA鐨勫お絀哄浘鐗囩浉榪炴帴錛岃兘浣夸綘嫻忚浠ュ墠鐨勫浘鐗囷紝闃呰鍥劇墖璇存槑錛岀敋鑷寵繕鑳戒嬌鐢℅oogle Translate灝嗘枃鏈炕璇戞垚鍏跺畠璇█銆傝鐪婥oncentric Sky鐨凜EO鍦ㄤ粬浠殑鍗氬涓?a >瀵笿ava Store鍜孞avaFX鐨勬弿榪?/a>銆?br />
涓轟粈涔堝紑鍙戣呬滑涓嶈兘鍦ㄥ叾瀹冨浗瀹剁櫥褰曪紵浠涔堟椂鍊欐墠鑳藉厑璁告垜浠湪鍏跺畠鍥藉璐╁崠搴旂敤紼嬪簭錛?/strong>
鎴戜滑灝嗗敖鍙兘蹇殑鍦ㄥ叾瀹冨浗瀹跺紑鏀捐繖涓晢搴椼傚浗闄呰錘鏄撹姣斾綘鎵鎯寵薄鐨勮繕瑕佸鏉傜殑澶?浣滀負涓涓伐紼嬪笀錛屾垜鎰熷埌鍗佸垎鐨勫悆鎯?銆傛瘡涓浗瀹跺湪紼庣巼錛岀鏈夋潈鍜屽晢涓氭柟闈㈤兘鏈変笉鍚岀殑娉曡銆傜幇鍦ㄦ垜浠湁娉曞緥鍜屽晢涓氭柟闈㈢殑浼欒浠湪榪欎簺闂鑰屽伐浣溿傚綋鍓嶏紝鎴戜滑璁″垝鍦?010騫寸殑鏃╀簺鏃跺欏疄鐜拌繖涓鐩爣錛屼絾鏄鏋滄垜浠兘鍋氬緱鏇村揩浜涳紝閭d竴瀹氫細鍛婅瘔浣犮?br />
涓轟簡浣挎秷鎭洿娓呮櫚錛屾垜浠Jeet Kaul錛孞ava鐨勯珮綆′箣涓錛屼綔涓浜涜В閲婏細(鐐瑰嚮瑙傜湅)
SafariScreenSnapz024.png
濡傛灉浣犳湁浠諱綍鍏充簬Java Store鐨勯棶棰橈紝璇峰彂閭歡緇欐垜錛屾垨鑰呭湪鎴戜滑鐨勫弽棣堥〉闈腑鎻愪氦浣犵殑璇勮銆?br />


Sha Jiang 2009-07-05 09:48 鍙戣〃璇勮
]]>
鏇村ソ鐨凙pplet浣撻獙錛氭搗鎶ュ撫(璇?http://m.tkk7.com/jiangshachina/archive/2008/11/02/237466.htmlSha JiangSha JiangSun, 02 Nov 2008 02:57:00 GMThttp://m.tkk7.com/jiangshachina/archive/2008/11/02/237466.htmlhttp://m.tkk7.com/jiangshachina/comments/237466.htmlhttp://m.tkk7.com/jiangshachina/archive/2008/11/02/237466.html#Feedback2http://m.tkk7.com/jiangshachina/comments/commentRss/237466.htmlhttp://m.tkk7.com/jiangshachina/services/trackbacks/237466.html鏇村ソ鐨凙pplet浣撻獙錛氭搗鎶ュ撫
鏈枃鏄?/span>Joshua Marinacci鐨勭郴鍒楀崥瀹?em>A Better Applet Experience涓殑絎簩綃?/span>錛屼粙緇嶄簡濡備綍浣跨敤嫻鋒姤甯у幓鍔犲揩欏甸潰鐨勫姞杞姐?2008.11.02鏈鍚庢洿鏂?

    鍦ㄦ湰緋誨垪鏂囩珷鐨勭涓閮ㄥ垎涓紝鎴戝悜浣犲睍紺轟簡濡備綍浣跨敤璁劇疆鍔犺澆鏃跺浘鐗囷紝鍖呮嫭鍔ㄦ佺殑GIF鑷棆浣撳浘鐗囥傝繖嬈★紝鎴戝皢鍚戝睍紺哄浣曚嬌鐢ㄥ睆騫曟埅鍥炬垨嫻鋒姤甯у幓鍔犲揩欏甸潰鐨勫姞杞姐?br />     Quicktime鐢靛獎灝辨湁嫻鋒姤甯х殑鎬濇兂銆傜數褰變腑鐨勪竴甯?緇忓父灝辨槸鍏朵腑鐨勭涓甯?灝嗕細鏀懼埌璇ョ數褰卞嚭鐜扮殑鍦版柟銆傚綋鐢ㄦ埛鐐瑰嚮嫻鋒姤甯ф椂錛屽疄鐜扮殑鐢靛獎鎵嶄細閫氳繃緗戠粶琚姞杞借繘鏉ャ傝繖灝辮兘鏋佸ぇ鍦板姞蹇鐢靛獎鎵鍦╓eb欏甸潰鐨勫姞杞介熷害銆備嬌鐢ㄥ皯璁窲avaScript錛屽畬鍏ㄥ彲浠ヤ負Java Applet瀹炵幇鐩稿悓鐨勫姛鑳姐?br />
Applet鐨勬搗鎶ュ撫
    鍦ㄧ爺絀惰繖涓狣emo涔嬪墠錛屾垜蹇呴』瑕佹彁鍒幫紝鎴戜釜浜哄皻鏈湪IE嫻忚鍣ㄤ腑嫻嬭瘯榪囪繖涓狣emo銆傚鏋滀綘鍙戠幇榪欎釜Demo涓嶈兘鍦ㄦ煇涓祻瑙堝櫒涓繍琛岋紝璇峰悜閿欒淇℃伅鍙戦佺粰鎴戯紝浠ヤ究鎴戣兘鏇存柊榪欎釜JavaScript銆?/strong>
    鍩烘湰鎬濇兂闈炲父鐨勭畝鍗曪紝鍒涘緩涓涓猟iv錛屽畠鍖呭惈涓涓摼鎺ュ拰涓寮犲睆騫曟埅鍥俱傚綋鐢ㄦ埛鐐瑰嚮璇ラ摼鎺ユ椂錛屾垜浠嬌鐢ㄤ竴涓柊鐨?code>applet鍏冪礌鍘繪浛鎹㈤〉闈腑鐨?code>a鍜?code>img鍏冪礌銆備竴鏃︽祻瑙堝櫒瀵熻鍒頒簡榪欎釜鏂扮殑applet鍏冪礌錛屽畠灝嗕笅杞絁ava鎻掍歡騫跺惎鍔ㄨ繖涓狝pplet銆?br />     榪欏氨鏈変竴涓緥瀛愶細濡傛灉浣犵偣鍑諱簡榪欏紶鍥劇墖錛屼竴涓狝pplet灝變細琚姞杞藉埌璇ュ浘鐗囨墍鍦ㄧ殑浣嶇疆錛屽茍浼氳"applet loaded"銆?br />
JavaScript
    濡備笅灝辨槸榪欎釜JavaScript鑴氭湰錛?br />
<script>
function generateInlineAppletTag(appletID, screenshotID) {
    
var attributes =
 {
        code:'animatedstartup.MainApplet',
        width:
100
,
        height:
100
,
        archive:'http:
//projects.joshy.org/demos/AnimatedStartup/AnimatedStartup.jar',

        id:'fooApplet'
    };
    
var parameters =
 {
        image:'http:
//projects.joshy.org/demos/AnimatedStartup.gif',

        centerImage:'true'
    };
    
    
    
var appletTag = document.createElement("applet"
);
    
    
for (var attribute in
 attributes) {
        appletTag.setAttribute(attribute,attributes[attribute]);
    }
    
    
if (parameters != '#ff0000' && parameters != null
) {
        
for (var parameter in
 parameters) {
            
var param = document.createElement("PARAM"
);
            param.setAttribute(
"name"
,parameter);
            param.setAttribute(
"value"
,parameters[parameter]);
            appletTag.appendChild(param);
        }
    }
    
    
    
var bodyRef =
 document.getElementById(appletID);
    
var screenshot =
 document.getElementById(screenshotID);
    bodyRef.removeChild(screenshot);
    bodyRef.appendChild(appletTag);
}
</script>
璇ヨ剼鏈殑絎竴閮ㄥ垎鍒濆鍖栦簡涓や釜鍝堝笇琛紝瀹冧滑鍖呭惈浜?code>applet鍏冪礌鐨勫睘鎬т笌宓屽鐨刾aram鏍囩銆傜劧鍚庯紝瀹冧細浣跨敤document.createElement()鏂規硶鍘誨垱寤鴻繖涓猘pplet錛屽茍閰嶇疆鍏朵腑鐨勫睘鎬т笌PARAM鍏冪礌銆傚埌鐩墠涓烘錛岃繕寰堢洿鎺ャ傜湡姝e湴濂囧涔嬩簨鍙戠敓鍦?code>generateInlineAppletTag鍑芥暟鐨勬渶鍚庡洓琛屻傚畠浣跨敤浼犲叆鐨?code>appletID鍙傛暟涓庡寘鍚潃涓婅堪閾炬帴涓庡浘鐗囩殑div鍏冪礌鐩歌仈鍦ㄤ竴璧鳳紝鐒跺悗瀹冧細鎵懼埌騫跺垹闄よ閾炬帴錛岃岀敤鏂扮殑applet鍏冪礌鍘繪浛浠h繖涓摼鎺ャ?br />
HTML
瑕佷嬌鐢ㄤ笂榪癹avascript鍑芥暟錛屼綘鍙渶灝嗗畠鏀懼埌欏甸潰鐨勯《閮紝騫墮氳繃閭e紶灞忓箷鎴浘閾炬帴鐨刪ref鍘昏皟鐢ㄥ畠銆傚湪鏈緥涓紝鎴戜嬌鐢ㄤ簡錛?br />
<div id="appletDiv">
<id="screenshot1" href="javascript:generateInlineAppletTag('appletDiv','screenshot1');">
<img src="http://projects.joshy.org/demos/AnimatedStartup/applet_screenshot.png" border="0"
/>
</a>
</div>
榪欎釜div琚懡鍚嶄負appletDiv錛岄摼鎺ヨ鍛藉悕涓?code>screenshot1銆傝閾炬帴鐨?code>href浼氳皟鐢ㄤ笂榪癹avascript鍑芥暟錛屽茍浼犲叆div涓庨摼鎺ョ殑鍚嶇О銆傛渶鍚庤鍥劇墖灝卞彧鏄樉紺哄皢瑕佽繍琛岀殑Applet鐨勪竴寮犲睆騫曟埅鍥撅紝璇ュ浘琚竴涓挱鏀炬寜閽鐩栫潃銆傚氨榪欎箞綆鍗曪紝鍦?/span>榪欓噷浣犲彲浠ョ湅鍒板畬鏁寸殑javascript鍜孒TML璇彞銆?br />
緇撹
榪欎釜javascript鍙槸涓涓紑濮嬨備綘榪樿兘寰堝鏄撶殑鎵╁睍瀹冿紝浣垮浘鐗囦笂鑳藉睍鐜板叧浜庤繖涓狝pplet鐨勬洿澶氫俊鎭備綘涔熷彲浠ユ妸榪欎釜javascript閲嶅啓涓轟竴涓洿鍔犲彲閲嶇敤鐨勫艦寮忥紝浣垮畠鑳藉琚綘鐨勬暣涓珯鐐規墍鍏變韓銆?br /> 涓嬫鎴戝皢鍚戜綘灞曠ず濡備綍浣跨敤鏂扮殑鍙戝竷宸ュ叿鍖呭幓渚︽祴褰撳墠宸插畨瑁呯殑Java鐗堟湰錛屽茍鍚姩鏇存柊紼嬪簭銆?br /> 閲嶅涓閬嶏紝濡傛灉浣犲湪鏌愪釜騫沖彴鎴栨祻瑙堝櫒涓彂鐜頒簡浠諱綍閿欒錛岃璁╂垜鐭ラ亾錛屼互渚挎洿鏂拌繖涓剼鏈?/strong>



Sha Jiang 2008-11-02 10:57 鍙戣〃璇勮
]]>
鏇村ソ鐨凙pplet浣撻獙錛氬畾鍒跺姞杞芥椂鐢婚潰(璇?http://m.tkk7.com/jiangshachina/archive/2008/10/29/236954.htmlSha JiangSha JiangTue, 28 Oct 2008 23:32:00 GMThttp://m.tkk7.com/jiangshachina/archive/2008/10/29/236954.htmlhttp://m.tkk7.com/jiangshachina/comments/236954.htmlhttp://m.tkk7.com/jiangshachina/archive/2008/10/29/236954.html#Feedback2http://m.tkk7.com/jiangshachina/comments/commentRss/236954.htmlhttp://m.tkk7.com/jiangshachina/services/trackbacks/236954.html鏇村ソ鐨凙pplet浣撻獙錛氬畾鍒跺姞杞芥椂鐢婚潰
    鏈枃鏄?/span>Joshua Marinacci鐨勭郴鍒楀崥瀹?em>A Better Applet Experience涓殑絎竴綃?/span>錛屼粙緇嶄簡濡備綍瀹氬埗鍔犺澆Applet鏃朵嬌鐢ㄧ殑鐢婚潰銆?2008.10.30鏈鍚庢洿鏂?

    浣犲彲鑳藉凡緇忓惉璇翠簡Java SE 6 Update 10搴斿綋浼氭敼榪汚pplet浣撻獙銆備綘鍙兘宸茬粡鐪嬭繃涓浜涘彲鍦ㄦ祻瑙堝櫒涓嫋鎷界殑Applet紺轟緥錛屼絾榪樻湁姣旈偅鏇村鐨勪笢瑗褲傚湪鏈崥瀹㈢郴鍒椾腑錛屾垜灝嗗悜浣犲睍紺哄浣曞湪鍙戝竷Applet鏃惰幏寰楀敖閲忓鐨勪笢瑗匡紝綰典嬌浣犱笉浣跨敤Update 10銆?br />
鎽嗚劚鍜栧暋鏉浘鏍?/strong>
    寰堝浜烘姳鎬ㄧ殑絎竴浠朵簨鎯呭氨鏄姞杞絁ava Applet鏃朵嬌鐢ㄧ殑鍜栧暋鏉浘鏍囥傛牴鎹綘鍏蜂綋浣跨敤鐨凮S鍜孞VM鐗堟湰錛岃繖涓浘鏍囨槸涓嶅悓鐨勶紝浣嗗畠鐪嬭搗鏉ユ繪槸鍍忎笅鍥鵑偅鏍楓?br />
    鏈夊緢澶氱悊鐢卞彲浠ヨ涓鴻繖浼氬洶鎵板埌搴旂敤紼嬪簭寮鍙戣咃紝鍖呮嫭涓嶈兘涓轟粬浠嚜宸辯殑杞歡鏍囨敞鍝佺墝錛岀牬鍧忓簲鐢ㄧ殑瑙嗚瑙傛劅錛屾互鐢ㄦ榛勮壊銆傝繖浜涢兘鏄紜殑鎵硅瘎銆備絾鍦ㄨ繖鍎挎垜瑕佸憡璇変綘錛屾棤欏婚伒寰繖縐嶆柟寮忋傝繖涓榛勮壊鐨勫浘鏍囧彧鏄竴縐嶉粯璁ょ殑鏂瑰紡緗簡銆備綘杞繪槗灝辮兘錛屼篃搴旇灝嗗姞杞界敾闈㈡墍浣跨敤鐨勫浘鐗囨敼鎴愪笌浣犵綉绔欑殑鍏跺畠閮ㄥ垎鐩擱傚簲鐨勫浘鐗囥?br />     鍦↗ava SE 6 Update 10鍑虹幇鐨勫緢闀挎椂闂翠箣鍓嶏紝Applet鎻掍歡灝卞凡緇忔敮鎸佸湪鍔犺澆鐢婚潰涓嬌鐢ㄥ畾鍒跺浘鐗囦簡銆傚彧闇璁劇疆Applet鐨?em>image鍙傛暟灝卞彲浠ヤ簡銆傚氨鏄繖涔堢畝鍗?榪欏効灝辨湁涓涓緥瀛愶細
<applet code="animatedstartup.MainApplet"
        archive
="AnimatedStartup.jar"
        width
="100" height="100"
        
>
    
<PARAM name="image" value="earth.gif"/>
    
<PARAM name="boxmessage" value="loading"/>
    
<PARAM name="boxborder" value="false"/>
</applet>
image鍙傛暟灝嗚緗竴涓姞杞芥椂鍥劇墖銆俇pdate 10榪樻敮鎸佹坊鍔犲姞杞芥椂淇℃伅錛屼互鍙婁笉緇樺埗Applet鐨勮竟妗嗭紝浣?em>image鏄瘮杈冮噸瑕佺殑涓涓弬鏁般備笂闈㈣繖涓緥瀛愮湅璧鋒潵灝卞儚涓嬮潰榪欐牱錛?br /> 灞忓箷鎴浘[1]

鍒朵綔鍔犺澆鏃跺姩鐢?/strong>
    Java 6鐩墠鏀寔浣跨敤鍔ㄦ佸浘鐗囦互娣誨姞鍔犺澆鏃跺姩鐢匯傚湪鍓嶉潰渚嬪瓙涓嬌鐢ㄧ殑earth.gif鍥劇墖鏂囦歡灝辨鏄竴涓姩鎬丟IF鏂囦歡銆傚鏋滀綘鏈夋渶鏂扮殑Applet鎻掍歡錛屽氨浼氱湅鍒板姞杞芥椂鐢婚潰鏄姩鎬佺殑銆傚綋鐒訛紝浣犲彲鑳芥兂瑕佷竴涓嚜鏃嬩綋鐨勫浘鐗囷紝瀹冩洿鍚堥備簺錛屽氨濡備綘鍦ㄨ繖閲岀湅鍒扮殑閭f牱錛氫綘涔熷彲浠ヤ嬌鐢ㄤ竴涓洿鍏鋒湁鎸囩ず鎬х殑GIF鍔犺澆鍥劇墖錛屽氨鍍?/span>榪欓噷鐨勫浘鐗囬偅鏍?sup>[2]銆?br />     鍏充簬Applet鍔犺澆鏃剁敾闈㈢殑鏇村鍐呭璇瘋鍙戝竷鏂囨。鐨?/span>鐗瑰埆灞炴т竴鑺?/span>錛屼互鍙?/span>鍏充簬榪欎釜鏂版彃浠剁殑璇存槑銆?br />     鏈懆灝辨槸榪欎簺浜嗐傚湪姝ゅ浣犲彲鐪嬪埌榪欎釜Demo鐨勫彲榪愯鐗堟湰銆備笅嬈℃垜灝嗗悜浣犲睍紺猴紝鍦ㄨ繍琛屼竴涓狝pplet涔嬪墠錛屽浣曚嬌鐢ㄤ竴涓睆騫曟埅鍥懼幓鏇夸唬榪欎釜鐪熷疄鐨凙pplet銆?br />
璇戞敞
[1]鍘熸枃騫舵湭鏄劇ず榪欏紶鍥劇墖銆?br /> [2]鏈彞寰堟湁浜涘鎬紝姝ゅ鐨勪袱涓?榪欓噷"搴旇鎸囧悓涓涓湴鍧銆?br />


Sha Jiang 2008-10-29 07:32 鍙戣〃璇勮
]]>
Java SE 6 Update 10鍙戝竷浜?(鍘?http://m.tkk7.com/jiangshachina/archive/2008/10/17/234849.htmlSha JiangSha JiangFri, 17 Oct 2008 13:37:00 GMThttp://m.tkk7.com/jiangshachina/archive/2008/10/17/234849.htmlhttp://m.tkk7.com/jiangshachina/comments/234849.htmlhttp://m.tkk7.com/jiangshachina/archive/2008/10/17/234849.html#Feedback7http://m.tkk7.com/jiangshachina/comments/commentRss/234849.htmlhttp://m.tkk7.com/jiangshachina/services/trackbacks/234849.htmlJava SE 6 Update 10鍙戝竷浜?
    鍦ㄧ粡榪囦簡婕暱鐨勬湡寰呬箣鍚庯紝Java SE 6 Update 10緇堜簬姝e紡鍙戝竷浜嗐傛湰鏂囦富瑕佺畝浠嬩簡璇ョ増鏈湪瀹㈡埛绔簲鐢ㄦ柟闈㈢殑鏀硅繘銆?2008.10.18鏈鍚庢洿鏂?

Java SE 6鏈氨鍔犲叆浜嗚澶氬叧浜庡鎴風搴旂敤鐨勬柊鐗規э紝鍦?a >Java SE 6鐨勫崄澶ф柊鐗規?/a>涓紝鐩存帴鍏充簬瀹㈡埛绔?妗岄潰棰嗗煙鐨勬柊鐗規у氨鏈変袱澶勩傛嬈pdate 10鏇存槸闆嗕腑鍦板湪璇ラ鍩熷唴鍋氬嚭浜嗛噸澶ф敼榪涖傛澶勶紝涓昏鍩轟簬Java SE 6 Update 10 Release Notes鐨勮鏄庯紝綆浠嬩簡璇ョ増鏈湪瀹㈡埛绔簲鐢ㄦ柟闈㈢殑鏀硅繘銆?br />
涓嬩竴浠ava Plug-in
    涓嬩竴浠ava鎻掍歡鍖呭惈浜咥pplet鍜孞ava Web Start鎶鏈殑鏈浣蟲灦鏋勭壒鎬с傚畠涓哄湪Web嫻忚鍣ㄤ腑鍙戝竷Java鍜孞ava FX鍐呭鎻愪緵浜嗗仴澹殑騫沖彴銆備笅涓浠ava鎻掍歡涓洪珮綰х敤鎴峰唴瀹瑰拰浼佷笟綰у簲鐢ㄦ彁渚涗簡璁稿寮哄ぇ鐨勭壒鎬с?br />     * 鍏佽涓篈pplet鐢寵鏇村鐨勫唴瀛橈紱鍙負姣忎釜Applet搴旂敤鎸囧畾涓嶅悓鐨勫懡浠よ鍙傛暟銆?br />     * 涓烘瘡涓狝pplet搴旂敤閫夋嫨涓嶅悓鐨凧RE銆?br />     * 鎻愰珮浜嗗彲闈犳с?br />     * 鑳藉湪Java鍜孞avaScript紼嬪簭璁捐璇█涔嬮棿榪涜鏇村ソ銆佹洿渚挎嵎鐨勬暣鍚堛?br />     * 澧炲己浜嗗璁塊棶Web欏甸潰涓璂OM鐨勬敮鎸併?br />     * 澧炲姞浜嗗Web Services鐨勬敮鎸併?br /> 鍐呭緩鏀寔JNLP錛屼嬌寰桝pplet搴旂敤鍙珛鍗沖鐢ㄤ箣鍓嶇敱Java Web Start搴旂敤浣跨敤鐨凧NLP鎵╁睍錛屼緥濡侸avaFX榪愯鏃剁粍浠訛紝瀵瑰熀浜庣‖浠跺姞閫熺殑3D鍥懼艦錛岃棰戝洖鏀劇瓑絳夈?br />     P.S. 鍦ㄦ垜杈冩棭鍓嶇殑涓綃囪瘧鏂?strong>涓嬩竴浠ava Applet鎻掍歡鎶鏈?/a>
涓紝瀵硅繖涓柊鐨勬彃浠舵湁杈冭灝界殑鎻忚堪銆?br />
Java Quick Starter
    Java Quick Starter(JQS)涓轟簡鎻愰珮Applet紼嬪簭鍜孞ava搴旂敤紼嬪簭鐨勫垵濮嬪惎鍔ㄩ熷害錛屼細鍛ㄦ湡鎬ч鍔犺澆涓浜涘父鐢ㄧ殑JRE鏂囦歡鍒板唴瀛?鍗犵敤涓嶅浜?0M鐨勫唴瀛?銆備箣鍚庯紝褰揓ava紼嬪簭鍚姩鏃訛紝紓佺洏I/O灝嗕細鏄捐憲鍑忓皯錛岄偅涔堝惎鍔ㄩ熷害涔熷氨澶уぇ鍔犲揩浜嗐侸QS浼氫綔涓轟竴涓猈indows鏈嶅姟鍚姩錛屽湪浠誨姟綆$悊鍣ㄤ腑浼氱湅鍒頒竴涓悕涓簀qs.exe鐨勮繘紼嬨?br />     娉細JQS浠呰兘鐢ㄤ簬x86鏋舵瀯涓嬬殑Windows 2000鍜學indows XP緋葷粺錛涚敱浜嶹indows Vista緋葷粺鏈夊叾鑷繁鐨勯鍔犺澆鏈哄埗錛孞QS灝嗕笉鑳戒嬌鐢ㄣ?br />
Deployment Toolkit
    涓轟簡閬垮厤嫻忚鍣ㄧ殑鍏煎鎬ч棶棰橈紝Deployment Toolkit鎻愪緵浜嗕竴緇凧avaScript鏂規硶錛岃兘澶熻嚜鍔ㄧ敓鎴愰儴緗睞pplet鍜孞ava Web Start紼嬪簭鏃舵墍浣跨敤鐨凥TML璇彞銆?br />
Nimbus
    Nimbus鏄竴涓柊鐨凧ava璺ㄥ鉤鍙板瑙傘傚湪JDK 6 Update 10鑷甫鐨刣emo涓柊鍔犱簡涓涓猄wingSet3搴旂敤錛屼絾涓庡叾瀹冪殑demo搴旂敤(濡係wingSet2)涓嶅悓錛岃繖涓猟emo搴旂敤娌℃湁鍖呭惈婧愪唬鐮佸拰鍙墽琛岀殑jar鏂囦歡錛岃岄渶瑕侀氳繃Java Web Start榪愯(鎴戠寽鎯砈wingSet3搴旇榪樺浜庡紑鍙戦樁孌?銆傚畼鏂圭殑浠嬬粛涓湁涓寮犲浘鐗囷紝澶у鍙互鐪嬬湅錛岀‘瀹炴紓浜浜?姝ゅ墠錛岄粯璁ょ殑Metal澶栬宸茬粡澶氬勾鏈洿鏂頒簡)銆?br />  



Sha Jiang 2008-10-17 21:37 鍙戣〃璇勮
]]>鍒ゅ畾涓涓偣鏄惁鍦ㄤ笁瑙掑艦鍐?鍘?http://m.tkk7.com/jiangshachina/archive/2008/07/24/217214.htmlSha JiangSha JiangThu, 24 Jul 2008 09:02:00 GMThttp://m.tkk7.com/jiangshachina/archive/2008/07/24/217214.htmlhttp://m.tkk7.com/jiangshachina/comments/217214.htmlhttp://m.tkk7.com/jiangshachina/archive/2008/07/24/217214.html#Feedback13http://m.tkk7.com/jiangshachina/comments/commentRss/217214.htmlhttp://m.tkk7.com/jiangshachina/services/trackbacks/217214.html鍒ゅ畾涓涓偣鏄惁鍦ㄤ笁瑙掑艦鍐?/span>
濡備綍鍒ゅ畾涓涓偣P鏄惁瀛樺湪浜庢寚瀹氱殑涓夎褰BC鍐咃紝榪欒偗瀹氭槸涓涓畝鍗曠殑闂錛屾湰鏂囦粎鐢ㄤ竴涓浘褰㈢晫闈㈢▼搴忓睍紺轟簡璇ラ棶棰橈紝鏈夊叴瓚g殑鏈嬪弸鍙互鐪嬬湅銆?2008.07.24鏈鍚庢洿鏂?

鍦ㄦ澶勪嬌鐢ㄤ竴縐嶅父瑙佷笖綆渚跨殑鏂規硶錛?strong>濡傛灉涓夎褰AB錛孭AC鍜孭BC鐨勯潰縐箣鍜屼笌涓夎褰BC鐨勯潰縐浉絳夛紝鍗沖彲鍒ゅ畾鐐筆鍦ㄤ笁瑙掑艦ABC鍐?鍖呮嫭鍦ㄤ笁鏉¤竟涓?
銆?br /> 鍙煡錛岃鏂規硶鐨勫叧閿湪浜庡浣曡綆椾笁瑙掑艦鐨勯潰縐傚垢榪愬湴鏄紝褰撶煡閬撲笁瑙掑艦欏剁偣(A錛孊鍜孋)鐨勫潗鏍?(Ax, Ay)錛?Bx, By)鍜?Cx, Cy))涔嬪悗錛屽嵆鍙綆楀嚭鍏墮潰縐細
= |(Ax * By + Bx * Cy + Cx * Zy - Ay * Bx - By * Cx - Cy * Ax) / 2|

鍏抽敭鐨勪唬鐮佸涓嬶紝
// 鐢辯粰瀹氱殑涓変釜欏剁偣鐨勫潗鏍囷紝璁$畻涓夎褰㈤潰縐?br /> // Point(java.awt.Point)浠h〃鐐圭殑鍧愭爣銆?/span>
private static double triangleArea(Point pos1, Point pos2, Point pos3) {
    
double result = Math.abs((pos1.x * pos2.y + pos2.x * pos3.y + pos3.x * pos1.y
            
- pos2.x * pos1.y - pos3.x * pos2.y - pos1.x * pos3.y) / 2.0D);
    
return result;
}

// 鍒ゆ柇鐐筽os鏄惁鍦ㄦ寚瀹氱殑涓夎褰㈠唴銆?/span>
private static boolean inTriangle(Point pos, Point posA, Point posB,
        Point posC) {
    
double triangleArea = triangleArea(posA, posB, posC);
    
double area = triangleArea(pos, posA, posB);
    area 
+= triangleArea(pos, posA, posC);
    area 
+= triangleArea(pos, posB, posC);
    
double epsilon = 0.0001;  // 鐢變簬嫻偣鏁扮殑璁$畻瀛樺湪鐫璇樊錛屾晠鎸囧畾涓涓凍澶熷皬鐨勬暟錛岀敤浜庡垽瀹氫袱涓潰縐槸鍚?榪戜技)鐩哥瓑銆?/span>
    if (Math.abs(triangleArea - area) < epsilon) {
        
return true;
    }
    
return false;
}

鎵ц璇ュ簲鐢ㄧ▼搴忥紝鐢ㄩ紶鏍囧湪鍏朵腑鐐瑰嚮涓夋錛屽嵆鍙粯鍒朵竴涓笁瑙掑艦錛屽涓嬬粍鍥炬墍紺猴細

鐒跺悗浠呴渶縐誨姩榧犳爣錛屽氨浼氬嚭鐜頒竴涓┖蹇冨渾鍦堛傚鏋滃渾鍦堢殑涓績鍦ㄤ笁瑙掑唴(鍖呭惈鍦ㄤ笁鏉¤竟涓?錛屽垯鍦嗗湀鏄劇ず涓虹孩鑹詫紱鍚﹀垯錛屾樉紺轟負钃濊壊銆傚涓嬬粍鍥炬墍紺猴細


瀹屾暣浠g爜濡備笅錛?br />
public class CanvasPanel extends JPanel {

    
private static final long serialVersionUID = -6665936180725885346L;

    
private Point firstPoint = null;

    
private Point secondPoint = null;

    
private Point thirdPoint = null;

    
public CanvasPanel() {
        setBackground(Color.WHITE);
        addMouseListener(mouseAdapter);
        addMouseMotionListener(mouseAdapter);
    }

    
public void paintComponent(Graphics g) {
        
super.paintComponent(g);
        drawTriangel(g);
    }

    
private void drawTriangel(Graphics g) {
        
if (firstPoint != null && secondPoint != null) {
            g.drawLine(firstPoint.x, firstPoint.y, secondPoint.x, secondPoint.y);
            
if (thirdPoint != null) {
                g.drawLine(firstPoint.x, firstPoint.y, thirdPoint.x, thirdPoint.y);
                g.drawLine(secondPoint.x, secondPoint.y, thirdPoint.x, thirdPoint.y);
            }
        }
    }

    
private static boolean inTriangle(Point pos, Point posA, Point posB,
            Point posC) {
        
double triangeArea = triangleArea(posA, posB, posC);
        
double area = triangleArea(pos, posA, posB);
        area 
+= triangleArea(pos, posA, posC);
        area 
+= triangleArea(pos, posB, posC);
        
double epsilon = 0.0001;
        
if (Math.abs(triangeArea - area) < epsilon) {
            
return true;
        }
        
return false;
    }

    
private static double triangleArea(Point pos1, Point pos2, Point pos3) {
        
double result = Math.abs((pos1.x * pos2.y + pos2.x * pos3.y + pos3.x * pos1.y
                           
- pos2.x * pos1.y - pos3.x * pos2.y - pos1.x * pos3.y) / 2.0D);
        
return result;
    }

    
private MouseInputAdapter mouseAdapter = new MouseInputAdapter() {

        
public void mouseReleased(MouseEvent e) {
            Point pos 
= e.getPoint();
            
if (firstPoint == null) {
                firstPoint 
= pos;
            } 
else if (secondPoint == null) {
                secondPoint 
= pos;
                Graphics g 
= CanvasPanel.this.getGraphics();
                CanvasPanel.
this.paintComponent(g);
                g.drawLine(firstPoint.x, firstPoint.y, secondPoint.x, secondPoint.y);
            } 
else if (thirdPoint == null) {
                thirdPoint 
= pos;
                Graphics g 
= CanvasPanel.this.getGraphics();
                CanvasPanel.
this.paintComponent(g);
                g.drawLine(firstPoint.x, firstPoint.y, secondPoint.x, secondPoint.y);
                g.drawLine(firstPoint.x, firstPoint.y, thirdPoint.x, thirdPoint.y);
                g.drawLine(secondPoint.x, secondPoint.y, thirdPoint.x, thirdPoint.y);
            }
        }

        
public void mouseMoved(MouseEvent e) {
            Point pos 
= e.getPoint();
            Graphics2D g2 
= (Graphics2D) CanvasPanel.this.getGraphics();
            CanvasPanel.
this.paintComponent(g2);
            
if (firstPoint != null && secondPoint == null) {
                g2.drawLine(firstPoint.x, firstPoint.y, pos.x, pos.y);
            } 
else if (firstPoint != null && secondPoint != null && thirdPoint == null) {
                g2.drawLine(firstPoint.x, firstPoint.y, pos.x, pos.y);
                g2.drawLine(secondPoint.x, secondPoint.y, pos.x, pos.y);
            } 
else if (firstPoint != null && secondPoint != null && thirdPoint != null) {
                
if (inTriangle(pos, firstPoint, secondPoint, thirdPoint)) {
                    g2.setColor(Color.RED);
                } 
else {
                    g2.setColor(Color.BLUE);
                }
                
int radius = 4;
                g2.drawOval(pos.x 
- radius, pos.y - radius, radius * 2, radius * 2);
            }
        }
    };
}

public class Triangle extends JFrame {

    
private static final long serialVersionUID = 1L;

    
private CanvasPanel mainPanel = null;

    
public Triangle() {
        setTitle(
"Triangle");
        setSize(
new Dimension(300200));
        setResizable(
false);

        init();

        Container container 
= getContentPane();
        container.add(mainPanel);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(
true);
    }

    
private void init() {
        mainPanel 
= new CanvasPanel();
    }

    
public static void main(String[] args) {
        
new Triangle();
    }
}



Sha Jiang 2008-07-24 17:02 鍙戣〃璇勮
]]>涓嬩竴浠ava Applet鎻掍歡鎶鏈?璇?http://m.tkk7.com/jiangshachina/archive/2008/07/14/214703.htmlSha JiangSha JiangMon, 14 Jul 2008 11:56:00 GMThttp://m.tkk7.com/jiangshachina/archive/2008/07/14/214703.htmlhttp://m.tkk7.com/jiangshachina/comments/214703.htmlhttp://m.tkk7.com/jiangshachina/archive/2008/07/14/214703.html#Feedback2http://m.tkk7.com/jiangshachina/comments/commentRss/214703.htmlhttp://m.tkk7.com/jiangshachina/services/trackbacks/214703.html涓嬩竴浠ava Applet鎻掍歡鎶鏈?/span>
    Java SE 6瀵笿ava妗岄潰搴旂敤榪涜杈冨ぇ鐨勫崌綰э紝騫跺惎鍔ㄤ簡Java SE 6 Update N璁″垝錛岃璁″垝鏃ㄥ湪綆鍖朖RE鐨勫ぇ灝忥紝澧炶繘鐢ㄦ埛鐨勫畨瑁呬綋楠岋紝騫舵彁渚涗簡涓涓柊鐨凙pplet嫻忚鍣ㄦ彃浠訛紝璇ユ彃浠跺皢浼氶殢Java SE 6 Update 10鍙戝竷銆?a >鏈枃鍏ㄩ潰浠嬬粛浜嗚繖涓柊鎻掍歡鐨勫叧閿壒鎬э紝騫朵互NASA鐨?a >World Wind涓轟緥浠嬬粛浜嗚鎻掍歡鐨勫簲鐢ㄣ?2008.07.15鏈鍚庢洿鏂?

Applet鍥炴潵浜嗭紒
涓轟簡鍦ㄧ綉緇滀腑浼犻掍綘鐨勭▼搴忥紝鏄椂鍊欏啀嬈¤冭檻Java Applet鎶鏈簡銆?a >涓嬩竴浠ava鎻掍歡鎶鏈?/a>浠ヤ竴縐嶄笉鍚岀殑錛屾瘮榪囧幓鏇撮珮鏁堛佹洿鍙潬鐨勯斿緞鏉ヨ繍琛孉pplet銆傜幇鍦ㄤ綘鍙互鑾峰緱濡備笅濂藉錛?br />
  • 澧炲己鐨勫彲闈犳?/span>
  • 鏀硅繘鐨勭敤鎴蜂綋楠?/span>
  • 鍦ㄥ悗鍙板惎鍔ˋpplet
  • 鍐呭緩鐨凧NLP鏀寔
  • 閽堝姣忎釜Applet鐨勫懡浠よ鍙傛暟
  • 鍫嗗唴瀛樺ぇ灝忥紝Java 2D API鍔犻熼夐」
  • 鏀硅繘鐨凧ava/JavaScript紼嬪簭璁捐璇█闆嗘垚
  • 鏀硅繘鐨刉indows Vista鏀寔
  • 絳懼悕鐨凙pplet鐜板湪鍙互鍦↖nternet Explorer鐨勪繚鎶ゆā寮忎腑姝e父榪愯
涓嬩竴浠ava鎻掍歡鎻愪緵浜嗕竴縐嶅畬鍏ㄩ噸鏂拌璁$殑鏋舵瀯錛屽畠灝嗗嚭鐜板湪Java SE 6 Update 10涓傝鎻掍歡涓鴻繍琛屽湪緗戠粶嫻忚鍣ㄤ腑鐨凙pplet鎻愪緵浜嗗己澶х殑鏂板姛鑳斤紝瀹冧互鍚戝悗鍏煎鐨勬柟寮忔敼榪涗簡鏁翠釜Applet鐨勫彲闈犳у強鍔熻兘銆?br /> 涓嬩竴浠ava鎻掍歡鏈鏈夋剰涔夌殑鏂扮壒鎬ф槸瀹冨唴寤烘敮鎸侀氳繃JNLP鏂囦歡鍚姩Applet銆備嬌鐢↗NLP鏂囦歡鏍煎紡浣滀負Applet鐨勬弿榪扮灝辮兘鍏佽Applet椹笂澶嶇敤涔嬪墠涓篔ava Web Start搴旂敤鎵鍐欑殑JNLP鎵╁睍銆?br />
鎵цApplet鐨勬柊閫斿緞

鎵цApplet鐨勬柊閫斿緞鍦ㄧ粨鏋勪笂涓嶫ava Web Start鎶鏈浉浼鹼紝浣嗕笌嫻忚鍣ㄦ暣鍚堢殑鏇翠負绱у瘑銆侫pplet涓嶅湪榪愯浜庣綉緇滄祻瑙堝櫒鍐呯殑JVM涓紝鑰屾槸浼氬惎鍔ㄤ竴涓嫭绔嬬殑JVM榪涚▼鍘昏繍琛孉pplet銆傞粯璁ゅ湴錛屽彧鏈変竴涓狫VM灝嗚鍚姩錛屼絾浣犱篃鑳藉惎鍔ㄥ涓狫VM錛屽茍涓斿彲浠ヤ負姣忎釜Applet閮借緗懡浠よ鍙傛暟錛屾墍浠ヤ綘鑳藉獎鍝嶅爢鍐呭瓨鐨勫ぇ灝忔垨鍏跺畠鐨勮姹傘?br />
              
Figure 1. Applet Architecture
鍦ㄤ笂鍥句腑錛屼簯琛ㄧずJVM瀹炰緥銆傚湪嫻忚鍣ㄥ唴鏈変竴涓皬鐨勶紝headless JVM琚敤浜庣鐞嗕竴涓垨澶氫釜瀹㈡埛绔疛VM涔嬮棿鐨勮繛鎺ワ紝榪欎簺JVM榪愯鐫Applet銆傚湪璇ュ浘涓紝Duke琛ㄧずApplet銆傚叾涓紝涓涓狫VM瀹炰緥榪愯鐫涓や釜Applet錛屽彟涓涓繍琛岀潃涓涓狝pplet銆?br /> Applet鐩存帴浠嶫NLP鏂囦歡鍚姩錛屽畠浣跨敤鐨凧NLP鏂囦歡涓嶫ava Web Start杞歡浣跨敤鐨勬弿榪扮鏂囦歡鐩稿悓錛屽茍涓斿厑璁鎬嬌鐢ㄦ瘮鍏稿瀷鐨?archive"錛?code"鍜?cache_archive"鏇翠負寮哄ぇ鐨勫弬鏁般?br /> 鏂扮殑鎻掍歡鎻愪緵浜嗭細
  • 鑳藉璁塊棶涔嬪墠浠呯敱Java Web Start杞歡涓撶敤鐨勯珮綰NLP鎵╁睍銆備箣鍓嶆湁灝戦儴鍒嗗弬鏁拌兘澶熶嬌鐢紝浣嗘湁涓浜涢檺鍒訛紝鐜板湪榪欎簺闄愬埗鍒欒鍘婚櫎銆?/span>
  • 閫氳繃Applet璁塊棶JNLP API銆?/span>
  • 鏀寔PersistenceService鍜孌ownloadService銆?/span>
  • 鑳藉鎺у埗鍫嗗唴瀛樺ぇ灝忥紝鍛戒護琛屽弬鏁幫紝JRE鐗堟湰閫夋嫨鍜岃嚜鍔ㄤ笅杞姐備綘鍏鋒湁Java Web Start杞歡鎵鎷ユ湁鐨勭浉鍚屽姛鑳姐?/span>
鐜板湪浣犲氨鍙互鍦╓eb欏甸潰涓嬌鐢ㄥ儚涓嬮潰榪欐牱鐨勮鍙ヤ簡錛?br />
<applet width=500” height=500>
    
<param name=”jnlp_href” value=”my_applet.jnlp”>
</applet>
璋冪敤Applet鐢熷懡鍛ㄦ湡鏂規硶init錛宻tart錛宻top鍜宒estroy浼氭洿涓虹‘瀹氾紝騫朵笖宸茬粡鏀硅繘浜嗚法嫻忚鍣ㄨ涓恒傚畬鍏ㄦ敮鎸丄pplet綾昏杞藉櫒緙撳瓨錛岄仐鐣欑殑Applet鐢熷懡鍛ㄦ湡鍙婂鍚戝悗鍏煎鎬х殑闇姹傦紝騫朵笖榪欎簺琛屼負閮藉凡寰楀埌浜嗘敼榪涖?br /> Applet榪愯鐨勫氨鍍忎竴涓敱Java Web Start鍚姩鐨勫簲鐢ㄣ傚弬鏁癹nlp_href鍦╓eb欏甸潰鍜孉pplet鐨凧NLP鎻忚堪涔嬮棿璧峰埌浜嗘ˉ鎺ョ殑浣滅敤銆傚湪濡傚搴︿笌楂樺害榪欐牱鐨勭壒瀹氭柟闈紝Applet鏍囩涓嶫NLP鏂囦歡鍏鋒湁閲嶅彔鐨勬満鍒躲?br /> 涓鑸湴錛屼綘搴旇浣跨敤Deployment Toolkit錛岃繖涔熸槸涓涓嚭鐜板湪Java SE 6 Update 10涓殑鏂板伐鍏鳳紝瀹冭兘鑷姩鍦頒負Applet鏍囩鐢熸垚HTML銆?a >閮ㄧ講寤鴻鎸囧崡灞曠ず浜嗗浣曚嬌鐢―eployment Toolkit綆渚垮湴鍙戝竷Applet銆?br />
閰嶇疆Applet
鐜板湪涔熻兘鏇翠負綆鍗曞湴鍦ㄥ涓柟闈㈡潵閰嶇疆Applet錛屽寘鎷爢鍐呭瓨澶у皬錛岄渶瑕佽浣跨敤鐨凧ava鐗堟湰錛岀被鍔犺澆鍣ㄧ紦瀛橈紝杈圭晫錛屽強鍏跺畠銆?br /> <applet>涓嶫NLP鏂囦歡鍦ㄩ拡瀵規煇浜涘弬鏁版椂鏈夐噸鍙犵殑鏈哄埗銆傝繖浜涘啿紿佸彲浠ョ敤濡備笅鏂規硶瑙e喅錛?br />
  • width and height錛氳繖浜涘睘鎬у皢鎬繪槸浠?lt;applet>錛岃屼笉鏄疛NLP鏂囦歡錛屼腑鑾峰彇銆傝繖鏄亣璁炬祻瑙堝櫒鐭ラ亾Applet鍦╓eb欏甸潰涓婂簲璇ユ樉紺哄澶э紝涔熷彧鏈夋祻瑙堝櫒鎵嶈兘鏀寔鐩稿浜庨〉闈㈢殑瀹藉害涓庨珮搴?渚嬪錛寃idth="50%")銆?/span>
  • codebase錛氬鏋淛NLP鏂囦歡鍦?lt;jnlp>鏍囩涓寚瀹氫簡涓涓粷瀵圭殑codebase錛岄偅涔堝氨浣跨敤瀹冦傚惁鍒欙紝灝嗕嬌鐢ㄥ湪codebase handling涓鑺備腑鎻忚堪鐨勮鍒欒繘琛岀粍緇囥?/span>
  • code錛氬綋鎸囧畾浜唈nlp_href鍙傛暟錛孉pplet鐨勪富綾誨悕灝嗕粠main-class鍙傛暟鎹㈡垚JNLP鏂囦歡涓殑applet-desc鏍囩錛屽茍涓攃ode灞炴т細琚拷鐣ャ傛敞鎰忥紝璇ョ壒鎬у厑璁鎬綘涓虹粡鍏窲ava鎻掍歡鍐欎竴涓嫢鏈夊弽棣堢殑Applet鏍囩錛屼絾鍦ㄦ柊鐨凧ava鎻掍歡涓紝璇ユ爣絳懼彲浣跨敤鏇撮珮綰х殑鍔熻兘銆傝瑙佷笅闈㈢殑"鍏煎鎬?涓鑺傘?/span>
  • 浠諱綍涓涓敱<param>鏍囩鎸囧畾鐨凙pplet鍙傛暟灝嗕笌JNLP鏂囦歡涓寚瀹氱殑鍙傛暟榪涜鍚堝茍銆傚鏋?lt;applet>鏍囩鍜孞NLP鏂囦歡閮芥寚瀹氫簡鍚屼竴涓弬鏁幫紝<applet>鏍囩涓殑鐗堟湰灝嗚鐩朖NLP鏂囦歡涓殑鐗堟湰錛岄櫎浜嗗弬鏁癹ava_arguments鍜宩ava_version銆?/span>
  • 鏂扮殑java_arguments鍜宩ava_version鍙傛暟鍦↗NLP Applet涓槸涓嶅繀瑕佺殑銆備細鏇挎崲涓洪氳繃JNLP鏂囦歡璇鋒眰JRE鐗堟湰鎴栧悜JVM浼犻掑弬鏁扮殑鏈哄埗銆傛墍浠ワ紝鍛戒護琛屽弬鏁板拰JNLP鏂囦歡璇鋒眰鐨凧RE鐗堟湰灝嗕細瑕嗙洊HTML涓負Applet鎸囧畾鐨勮繖浜涘箋?/span>
  • 鐗瑰畾鐨勫弬鏁幫紝渚嬪image錛宐oxbgcolor絳夌瓑錛屽湪Applet鐨勫惎鍔ㄨ繃紼嬩腑鏄湁鐢ㄧ殑銆傚湪HTML鑰屼笉鏄疛NLP鏂囦歡涓寚瀹氳繖浜涘弬鏁板彲鑳芥洿濂戒簺錛屼互渚夸簬鍦ㄥ姞杞絎eb欏甸潰鏃跺氨鍙珛鍗寵幏鍙栧畠浠紝鑰屼笉鐢ㄥ啀絳夊埌鍗曠嫭涓嬭澆JNLP鏂囦歡涔嬪悗銆?/span>
榪囧幓錛岄氳繃Java鎺у埗闈㈡澘璁劇疆鏈澶у爢鍐呭瓨鏄湁闄愬埗鐨勩傚湪鏂扮殑Java鎻掍歡涓紝榪欎簺闄愬埗琚彇娑堛傜幇鍦ˋpplet鍙互鍍忓懡浠よ搴旂敤閭f牱浣跨敤澶ч噺鍫嗙┖闂淬?br /> 鎸囧畾涓涓瘮榛樿鍊煎ぇ鐨勫爢絀洪棿錛?br />
<APPLET archive="my_applet.jar" code="MyApplet" width="300" height="300">      
    
<PARAM name="java_arguments" value="-Xmx128m">  
</APPLET>
鎸囧畾涓涓潪榛樿澶у皬鐨勫爢鍐呭瓨浠ュ強涓涓狫ava 2D紜歡鍔犻熷櫒閫夐」錛岃閫夐」甯擱氳繃JOGL浣跨敤OpenGL搴旂敤浜嶢pplet銆?br />
<APPLET archive="my_applet.jar" code="MyApplet" width="300" height="300">      
    
<PARAM name="java_arguments" value="-Xmx256m -Dsun.java2d.noddraw=true">  
</APPLET>
濡傛灉浣犲枩嬈紝涓涓狝pplet鍙己鍒惰繘鍏ヤ竴涓睘浜庡畠鑷繁鐨凧VM瀹炰緥錛岃屼笌鎵鏈夊叾瀹冪殑Applet闅旂寮錛?br />
<param name=”separate_jvm” value=true” />
褰撴妸鏌愪簺妗岄潰搴旂敤縐繪鍒癢eb嫻忚鍣ㄦ椂錛岃繖灝辨湁鐢ㄤ簡銆?br /> 浣犱篃鑳戒嬌鐗瑰畾鐨凙pplet榪愯鍦ㄧ壒瀹氱増鏈殑JRE涓婏紝濡備笅鎵紺猴細
<j2se version=1.4+” >
<j2se version=1.5*” >
褰撴兂閽堝鐗瑰畾鐗堟湰鐨凧RE錛屾垨Applet鍙栦唬鏃╂湡鐗堟湰鐨勯夋嫨鏈哄埗(濡傚悓IE嫻忚鍣ㄤ腑鐨凜LSID)錛岃繘琛岃川閲忔祴璇勬椂錛岃鏂規硶灝卞緢鏈夌敤浜嗐傚鏋滆姹備簡涓涓潪甯歌佺殑JRE鐗堟湰錛屽氨浼氬己鍒舵墽琛岄檺鍒訛紱濡傛灉Applet璇曞浘鍔犺澆鏈鍚嶇殑浠g爜錛屽皢浼氭彁紺虹敤鎴楓?br /> 娉ㄦ剰錛屽洜涓烘敮鎸丣NLP鐨凧ava鎻掍歡鏄湪Java SE 6 Update 10涓墠棣栨鍑虹幇鐨勶紝鎵浠ユ寚瀹氬儚“1.4+”榪欐牱鐨勭増鏈熀鏈笂娌℃湁鎰忎箟鐨勩傚綋闇瑕?#8220;1.7+”鏃訛紝榪欐墠鏈夋剰涔夈?br /> 鍙﹀錛屼綘鍙互鍦↗NLP鏂囦歡涓嬌鐢?lt;update>鏍囩鏉ユ樉钁楅檷浣庣浜屾鍙婃帴涓嬫潵鍚勬鍚姩鐨勬椂闂淬?br />
<update check=”background”>
鍦ㄨ繖縐嶆儏鍐典笅錛屽皢浣跨敤緙撳瓨涓凡鏈夌殑Applet紼嬪簭錛屽茍涓斿湪鍚庡彴涓嬭澆璇ュ簲鐢ㄧ殑鏇存柊鐗堟湰銆傚湪涓嬫鍚姩鏃訛紝灝變細浣跨敤鏂扮増鏈?br /> 鏂扮殑鎻掍歡涔熻兘鏇村ソ鍦板鍥懼儚榪涜瀹氬埗錛屽湪Applet琚姞杞戒箣鍓嶄細灞曠ず璇ュ浘鍍忋俰mage鍙傛暟浼氫互鏀寔鍔ㄧ敾GIF鏂囦歡浣滀負鐩爣錛?a >Java Plug-in Developers' Guide鐨?a >Special Attributes涓鑺傚姝ゆ湁鎻忚堪銆傛澶栵紝鐜頒篃鏀寔濡備笅鏂扮殑鍙傛暟錛?br /> boxborder
涓涓竷灝斿瀷鍙傛暟錛岀敤浜庢寚瀹氬湪Applet琚姞杞戒箣鍓嶆槸鍚﹀湪Applet鍖哄煙鐨勮竟緙樼粯鍒朵竴涓搴︿竴璞$礌鐨勮竟妗嗐傞粯璁や負true銆傛垜浠緩璁皢璇ュ艱緗負false錛岀壒鍒槸灝嗕竴涓姩鐢籊IF鐢ㄤ綔鍔犺澆鏈熷浘鍍忔椂錛屼互閬垮厤鍙兘鐨勯棯鐑併?br /> centerimage
涓涓竷灝斿瀷鍙傛暟錛岀敤浜庢寚瀹氭槸鍚﹀皢鍔犺澆鏈熷浘鍍忓湪Applet鍖哄煙鍐呭眳涓樉紺猴紝鑰屼笉鏄粠宸︿笂瑙掕搗濮嬨傞粯璁や負false銆?br /> 浣跨敤鍙傛暟boxborder鍜宑enterimage鐨勪緥瀛愶細
<APPLET archive="large_archive.jar"
    code
="MyApplet"
    width
="300" height="300">
    
<!-- Use an animated GIF as an indeterminate progress bar
        
while the applet is loading -->
    
<PARAM NAME="image" VALUE="animated_gif.gif">
    
<!-- Turn off the box border for better blending with the
        surrounding web page 
-->
    
<PARAM NAME="boxborder" VALUE="false">
    
<!-- Center the image in the applet's area -->
    
<PARAM NAME="centerimage" VALUE="true">
</APPLET>

鍏煎鎬?/span>
鐜板湪鍙洿瀹規槗緇存姢鍚戝悗鍏煎鎬с備綘鍙垱寤鴻繍琛屽湪鏇存棭Java鎻掍歡鐗堟湰涓婄殑紼嬪簭錛屼絾浠呴渶鎻愪緵涓涓笌jnlp_href鍙傛暟涓鏍風殑鏍煎紡瀹屾暣鐨?lt;applet>鏍囩灝卞彲浣跨敤榪欎簺鏂扮壒鎬т簡銆傛棭鏈熺増鏈殑JRE浼氬拷鐣nlp_href鍙傛暟錛岃漿鑰屼嬌鐢?lt;applet>鏍囩銆傛柊鐨凧ava鎻掍歡鎶鏈皢蹇界暐archive鍜宑ode鍙傛暟錛岃屼粎浣跨敤JNLP鏂囦歡鍘誨惎鍔ˋpplet銆?br />
World Wind Applet紺轟緥
鐢盬orld Wind Java寮鍙戠粍鍒涘緩鐨?a >NASA World Wind Java Applet紺轟緥闃愯堪浜嗗鏋滃彂甯冨儚NASA World Wind Java榪欐牱鐨勯鍏堢被搴撱傚悓鏍峰湴錛屼篃鐢ㄧず渚嬭鏄庝簡濡備綍浣跨敤JavaScript鍦╓eb欏甸潰涓珮鏁堝湴鏁村悎HTML鍜孉pplet鍐呭銆?br />
              
Figure 2. NASA World Wind Applet
璇eb欏甸潰鍖呭惈浜嗗叧浜庡杸鏂杸鐗瑰北鑴夌殑淇℃伅(瑕佹劅璋㈢淮鍩虹櫨縐?錛屽茍涓斿皢World Wind Java浣滀負涓涓狝pplet宓屽叆鍏朵腑錛屼互鍥劇ず璇ュ北鑴変腑鍚勫北鐨勪綅緗?br />
<applet id="wwjApplet" width=600 height=380             
    code
="gov.nasa.worldwind.examples.applet.WWJApplet"             
    archive
="BackwardCompatibility.jar">
    
<param name="jnlp_href" value="WWJApplet.jnlp">     
</applet>
WWJApplet闅忔爣鍑嗙殑World Wind Java鍙戣鍖?/a>鍙戝竷銆傚涓嬫墍榪幫紝浣犲彲閫夋嫨緙栧啓浣犺嚜宸辯殑Applet綾誨茍灝哤orld Wind宓屽叆鍏朵腑錛?br /> 涓嬮潰鏄疻WJApplet.jnlp鏂囦歡涓浉鍏崇殑閮ㄥ垎錛?br />
<jnlp href="WWJApplet.jnlp">
<resources os="Windows">         
<property name="sun.java2d.noddraw" value="true"/>       
</resources>       
<resources>         
<j2se href="http://java.sun.com/products/autodl/j2se" version="1.4+"/>         
<jar href="worldwind.jar" main="true" />         
<extension name="jogl"            
 href
="http://download.java.net/media/jogl/builds/archive/jsr-231-webstart-current/jogl.jnlp" />       
</resources>       
<applet-descname="WWJ Applet"           
    main
-class="gov.nasa.worldwind.examples.applet.WWJApplet"           
    
<!-- Overwritten by the surrounding web page -->           
    width
="100"            
    height
="100">       
</applet-desc>     
</jnlp>
娉ㄦ剰鍑犵偣錛?br />
Web欏甸潰涓殑HTML閾炬帴璋冪敤JavaScript鍑芥暟錛岃鍑芥暟浼氫笌Applet榪涜浜や簰騫跺皢鍏跺鍚戝悎閫傜殑灞卞嘲銆備笅闈㈡槸榪欎簺閾炬帴涓殑涓涓細
<a href="javascript:gotoLocation(MOUNT_RAINIER);">Mount Rainier</a>
    (southeast of Tacoma, Washington) 
褰撶偣鍑昏閾炬帴鍚庯紝灝嗕細璋冪敤JavaScript鍑芥暟gotoLocation銆傝鍑芥暟瀹氫箟鍦ㄥ悓涓涓猈eb欏甸潰涓細
function gotoLocation(locationString) {
    
var params = locationString.split(';');
    
if(params.length == 3)  // Lat/lon
    getWWJApplet().gotoLatLon(parseFloat(params[1]),
    parseFloat(params[
2]));
    
}
Web欏甸潰HTML涓殑灞卞嘲浣嶇疆灝嗚瑙g爜涓篔avaScript瀛楃涓層傚皢浠庤繖浜涘瓧絎︿覆涓В鏋愬嚭綰害錛岀粡搴﹀強鍏跺畠瑙嗚淇℃伅錛屽茍灝嗗畠浠紶閫掔粰Applet銆?gotoLatLon鏂規硶鏄湪WWJApplet綾諱腑瀹氫箟鐨勶紱涓婇潰鐨勬柟娉曡皟鐢ㄥ皢璧峰姩涓涓狫avaScript-to-Java璋冪敤錛屾妸鍙傛暟浠嶫avaScript寮曟搸浼犵粰Java銆俉orld Wind Applet鎺ユ敹璇ラ氱煡錛屽茍灝嗚鐐逛互鍔ㄧ敾鐨勬柟寮忓垏鎹㈠埌閫傚綋鐨勫湴鏂廣傛敞鎰忥紝gotoLatLon鏂規硶浼氳繀閫熷湴榪斿洖錛屼互渚挎祻瑙堝櫒涓嶅繀絳夊緟瀹冪殑瀹屾垚錛涜鍔ㄧ敾浼氬湪涓涓崟鐙殑Java綰跨▼涓繍琛屻?br />
  
Figure 3. World Wind Applet with Mount St. Helen's Clicked
濡備笂鎵榪幫紝灝哤orld Wind Java闆嗘垚鍒頒綘鐨勫簲鐢ㄧ▼搴忔垨Applet紼嬪簭涓殑鏈濂芥柟娉曟槸灝嗗叾浣滀負涓涓狫NLP鎵╁睍銆傝繖鍏佽寰堝鏉ヨ嚜緗戠粶鐨勯泦鎴愪簡World Wind Java鐨勫簲鐢ㄧ▼搴忔垨Applet紼嬪簭鑳藉鍏變韓World Wind浠g爜璧勬簮銆備負浜嗗紩鐢╓orld Wind JNLP鎵╁睍錛屼綘闇灝嗕笅闈㈢殑璇彞琛屽姞鍏ュ埌浣犵殑搴旂敤紼嬪簭鎴朅pplet紼嬪簭鐨凧NLP鏂囦歡涓殑<resources>閮ㄥ垎錛?br />
<extension name="worldwind" href="http://worldwind.arc.nasa.gov/java/0.4.1/webstart/worldwind.jnlp"/>     
<extension name="jogl"       
    href
="http://download.java.net/media/jogl/builds/archive/jsr-231-webstart-current/jogl.jnlp"/>
娉ㄦ剰錛學orld Wind鎵╁睍JNLP鏄尯鍒嗙増鏈殑錛屾墍浠ヤ綘闇鍙傝僕orld Wind鏂囨。鎴栬闂?a >璁哄潧鍘繪壘鍒頒綘鐨凧NLP浼氬紩鐢ㄥ埌鐨勬墿灞曠殑鏈鏂扮増鏈?a >World Wind Central鏄竴涓叧浜嶹orld Wind鏈鏂頒俊鎭殑鏈夌敤璧勬簮銆?br /> 灝哤orld Wind浣滀負涓涓墿灞曚嬌鐢ㄥ氨鎰忓懗鐫浣犱笉鑳藉皢WWJApplet鐩存帴浣滀負浣犵殑main-class浣跨敤銆傜敱浜嶫NLP鏂囦歡鏍煎紡鐨勮涔夛紝涓籮ar (main="true")蹇呴』瀹氫箟鍦ㄤ富JNLP鏂囦歡涓備絾寰堝鏄撳氨鑳介傚簲璇ラ檺鍒訛紝浣犲彲綆鍗曞湴鍒涘緩浣犺嚜宸辯殑WWJApplet瀛愮被(縐頒箣涓篗yWWJApplet)錛岃屽畠騫朵笉鍋氫換浣曚簨鎯咃細
class MyWWJApplet extends WWJApplet {}
灝唚orldwind.jar緗簬classpath涓紝騫剁紪璇戜笂榪扮被錛岀劧鍚庡皢璇ョ被鏀懼叆瀹冭嚜宸辯殑jar鏂囦歡涓傚紩鍏ヨ繖涓猨ar浣滀負浣犵殑涓籮ar錛孧yWWJApplet灝辨垚涓轟簡浣犵殑main-class錛岀劧鍚庡皢鍏朵綔涓篔NLP鎵╁睍寮曞叆鍒癢orld Wind涓?br />
緇撹
浠嬬粛浜咼ava鎻掍歡瀵笿NLP鐨勬敮鎸侊紝榪欎負Applet鐨勫彂甯冩彁渚涗簡寰堝鏂扮殑鍙兘錛岃繖瀵瑰湪嫻忚鍣ㄥ唴澶栧彂甯僇ava鍐呭鐨勬柟娉曠殑緇熶竴鍙堣繘浜嗕竴澶ф銆侫pplet鑷粠瀹冧滑璧峰宸茶繃浜嗗緢闀跨殑鏃墮棿錛岀幇鍦ㄩ殢鐫瀵笿NLP鐨勬敮鎸侊紝瀹冧滑浼氭瘮浠ュ線鏇村揩錛屼篃鏇存槗浜庡畾鍒躲?br />


Sha Jiang 2008-07-14 19:56 鍙戣〃璇勮
]]>
Java Applet涓嶉傜敤浜庤繖鏍風殑搴旂敤錛?璇?http://m.tkk7.com/jiangshachina/archive/2008/02/26/182208.htmlSha JiangSha JiangTue, 26 Feb 2008 06:07:00 GMThttp://m.tkk7.com/jiangshachina/archive/2008/02/26/182208.htmlhttp://m.tkk7.com/jiangshachina/comments/182208.htmlhttp://m.tkk7.com/jiangshachina/archive/2008/02/26/182208.html#Feedback9http://m.tkk7.com/jiangshachina/comments/commentRss/182208.htmlhttp://m.tkk7.com/jiangshachina/services/trackbacks/182208.htmlJava Applet涓嶉傜敤浜庤繖鏍風殑搴旂敤錛?/span>
    鍦ㄥ熀浜庢祻瑙堝櫒鐨勫簲鐢ㄤ腑錛屼負浣旻lash澶уぇ嫻佽浜嶫ava Applet?Java Applet鏄惁鐪熺殑涓嶉傜敤浜庤繖鏍風殑搴旂敤鍦烘櫙錛?a >John O'Conner鏈夎瘽瑕佽...(2008.03.29鏈鍚庢洿鏂?

    鎴戝凡姝d笌涓涓叕鍙鎬竴璧峰垱寤轟竴涓亰澶╃郴緇燂紝浠ュ府鍔╄鍏徃鑳藉鍦ㄧ嚎鍦伴攢鍞嚭瀹冧滑鏇村鐨勪駭鍝併傚悗绔叏鏄疛ava錛岃繕鏈塖pring錛孲ervlet錛?..閮芥槸浜涘ソ涓滆タ銆傚墠绔槸...濂藉惂錛屾槸Flash銆?br />     褰撴湁鍙兘鏃訛紝鎴戞洿鍠滄鍦ㄦ瘡涓湴鏂歸兘浣跨敤Java錛屾晠鎴戝氨榪欎釜闈㈠悜瀹㈡埛鐨勫簲鐢?-涓涓湡瀹炵殑鑱婂ぉ瀹㈡埛绔▼搴忛夋嫨浣跨敤Flash鑰屾彁鍑轟簡涓浜涢棶棰樸傝繖涓皥璇濊繘琛岃搗鏉ュ氨鍍忚繖鏍鳳細
    John錛氬搰錛岃繖涓駭鍝佸湪姣忓閮戒嬌鐢ㄤ簡Java錛屼絾鍓嶇闄ゅ錛岃岃繖姝f槸瀹㈡埛涓庝箣瀹為檯浜や簰鐨勫湴鏂廣備負浠涔堝湪閭e効閫夋嫨Flash錛?br />     Dev mgr錛氭槸鐨勶紝Flash寰堝鏄撱備嬌鐢ㄨ繖鏍蜂竴涓畝鍗曠殑UI涔熸槸寰堝鏄撶殑銆?br />     John錛氭垜鏄庣櫧錛屼絾浣跨敤Java涔熷彲鍗佸垎綆鍗曞湴鍋氬嚭榪欎釜鑱婂ぉUI銆傜幇鍦紝Swing鐨勫竷灞綆$悊鍣ㄥ凡寰堝鏄撲嬌鐢紝鐗瑰埆鏄綋浣犱嬌鐢ㄥ儚NetBeans榪欐牱鐨処ED鏉ュ竷灞UI鏃躲?br />     Dev mgr錛氶偅鍙兘鏄鐨勶紝浣嗚繖縐嶉夋嫨涓嶄粎浠呮槸鍩轟簬綆鏄撳湴鍒涘緩UI銆?br />     John錛氬摝錛熼偅鏄粈涔堝憿錛?br />     Dev mgr錛氭瘡涓鎴風嫻忚鍣ㄤ腑閮芥湁Flash銆傛垜浠笉蹇呭啀瀹夎涓涓繍琛屾椂紼嬪簭浜嗐?br />     John錛欽ava涔熷皢浼氶偅鏍鳳紝涓嶆槸鍚楋紵澶ч儴鍒嗙殑PC鍒墮犲晢閮藉寘鍚畠浜嗐?br />     Dev mgr錛氫篃璁革紝浣嗘垜浠煡閬揊lash鑲畾鏄偅鏍風殑銆侳lash閬嶅強緗戠粶錛岃屼笖寰堝彲鑳藉鎴峰凡緇忔湁浜咶lash鐨勮繍琛屾椂紼嬪簭銆傚閲屾病鏈夌殑璇濓紝涓嬭澆涓庡畨瑁呰繖涓繍琛屾椂紼嬪簭涔熸槸寰堝揩銆佸緢瀹規槗鐨勩?br />     John錛氭槸鐨勶紝浣咼ava涔熷皢鏄撲簬瀹夎銆?br />     Dev mgr錛氫絾鏄疛ava浼氳姳璐瑰緢闀跨殑瀹夎鏃墮棿銆傚畠澶ぇ浜嗐?br />     John錛氭垜涓嶇煡閬撶幇鍦ㄦ槸鍚﹁繕鏄偅鏍楓備負浜嗕嬌榪愯鏃剁▼搴忔洿灝忎篃鏇村姞鐨勬ā鍧楀寲錛屽凡緇忓仛浜嗗緢澶氬伐浣溿傛墍浠ヤ綘浠呴渶瑕佷笅杞戒綘鎵闇瑕佺殑閮ㄥ垎銆?br />     Dev mgr錛氭垜浠墍闇瑕佺殑灝辨槸闈炲父銆侀潪甯哥殑綆鍗曘備竴涓潪甯哥畝鍗曠殑UI錛屽畠鏈夌潃闈炲父綆鍗曠殑鍔熻兘鍘諱腑杞亰澶╂枃鏈侳lash鍙互鍋氬緱寰堝ソ銆?br />     浜よ皥緇х畫鐫錛屼絾鎴戜笉鎯沖紕寰楀お闀褲傚彲鑳紽lash鍋氬皬搴旂敤鏃朵細姣擩ava鍋氱殑鏇村ソ錛熷湪Sun宸ヤ綔浜嗗姝ら暱鐨勬椂闂達紝鎴戝氨寰堣嚜鐒跺湴鎯沖儚Java鏃犲涓嶅湪錛岃屼笖鍏跺畠鐨勬瘡涓漢涔熼兘鍠滄瀹冦傛垜涓鐩撮兘鑳芥妸浜嬫儏鍋氬ソ...浣嗗緢鏄劇劧錛屼笉鏄瘡涓漢閮借兘鍋氬埌銆備笅杞芥枃浠剁殑澶у皬浠庢湭鐑︽壈榪囨垜...浣嗗畠紜疄鐑︽壈鍒頒簡鍏跺畠鐨勪竴浜涗漢銆?br />     鍙﹀錛屾垜鍙戠幇鎰熻涓庣幇瀹炰竴鏍烽噸瑕併傛墍浠ワ紝濡傛灉Java鐜板湪鏇村揩錛屾洿杞誨閥錛岃屼笖鍦ㄦ祻瑙堝櫒涓伐浣滃緱鏋佸ソ錛岄偅灝嗕細鎬庢牱鍛紵涓嶇煡浣曟晠錛岃繖榪樻槸娌℃湁鐢ㄣ傛棫鏈夌殑鎰熻浠嶅氨鍦ㄩ偅鍎?-Java寰堟參錛屽緢澶э紝鑰屼笖寰堥毦鍦ㄦ祻瑙堝櫒涓伐浣溿傛洿浠や漢鎯婅鐨勬槸錛屼綘浼氬彂鐜版湁浜涗漢鍦ㄩ偅縐嶆儏鍐典笅灝卞啀涔熶笉鎶奐ava褰撲綔浠栦滑鐨勮В鍐蟲柟妗堜簡銆?br />     鎴戣仈緋諱簡涓浜涙湅鍙嬶紝浠栦滑涓璧鋒惌寤洪潰鍚戝鎴風殑緗戠珯銆備粬浠篃鏄嬌鐢‵lash銆傞偅涔圝ava鍛紵褰撶劧...閮芥槸鍦ㄥ悗绔殑涓氬姟閫昏緫涓傞偅涔堝浜庡鎴峰皢浼氫嬌鐢ㄥ埌鐨勫簲鐢ㄥ憿錛熷鏋滆繖浜涘簲鐢ㄦ槸宓屽叆鍒版祻瑙堝櫒涓殑錛屽畠浠氨浼氫嬌鐢‵lash銆傚搰!
    榪欐牱錛屼綘濡備綍瀵瑰緟榪欑鎰熻鍛紵Java闇瑕佸仛浜涗粈涔堜互鍙嶅嚮榪欎簺鏃ф湁鐨勬劅瑙夛紵涓轟粈涔團lash鍦ㄥ熀浜庢祻瑙堝櫒鐨勫簲鐢ㄤ腑鏇翠負嫻佽錛熸垜浠浣曟墠鑳戒嬌閭d簺搴旂敤杞屼嬌鐢↗ava錛?br />


Sha Jiang 2008-02-26 14:07 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 国产AV无码专区亚洲AV毛网站| 在免费jizzjizz在线播| 免费一级毛片在线播放放视频| 亚洲国产aⅴ成人精品无吗| 亚洲国产综合AV在线观看| 亚洲熟妇无码八V在线播放| 亚洲天然素人无码专区| 亚洲日韩AV一区二区三区中文| 亚洲精品9999久久久久无码 | 九九九精品成人免费视频| 在线看片v免费观看视频777| 成人免费福利视频| 成年人免费视频观看| 国产伦精品一区二区三区免费迷| 国产又黄又爽又猛的免费视频播放| 免费v片视频在线观看视频| 国产成人精品曰本亚洲79ren| 超清首页国产亚洲丝袜| 久久精品国产亚洲AV网站| 4480yy私人影院亚洲| 亚洲人成7777| 日韩在线视精品在亚洲| 国产久爱免费精品视频| 久久香蕉国产线看免费| 91九色老熟女免费资源站| 免费看美女被靠到爽的视频| 免费v片在线观看无遮挡| 亚洲国产精品无码一线岛国| 亚洲欧洲自拍拍偷综合| 亚洲成在人线在线播放无码| 人禽伦免费交视频播放| 久久久久久AV无码免费网站| 免费A级毛片无码无遮挡内射| 四虎永久在线精品免费观看地址 | 免费A级毛片无码免费视| 国产免费69成人精品视频| 亚洲乱码无码永久不卡在线| 亚洲综合激情九月婷婷| 蜜臀亚洲AV无码精品国产午夜.| AAAAA级少妇高潮大片免费看| 美女内射毛片在线看免费人动物|