开发者

trouble executing actionlistener in swing applet embedded in html

开发者 https://www.devze.com 2023-03-26 03:54 出处:网络
Following is the applet code below: import javax.swing.*; import java.awt.*; import java.applet.Applet; import java.awt.Graphics;

Following is the applet code below:

    import javax.swing.*;

    import java.awt.*;

    import java.applet.Applet;
    import java.awt.Graphics;
    import java.awt.Image;
    import java.awt.image.ImageObserver;
    import java.net.InetAddress;
    import java.net.MalformedURLException;
    import java.net.URI;
    import java.net.URL;
    import java.net.UnknownHostException;
    import javax.swing.border.*;

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.beans.*;
    import java.util.Random;
    import java.util.concurrent.Callable;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.Future;
    import java.util.concurrent.FutureTask;

    import javax.swing.ImageIcon;

    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;

    public class ui extends JApplet implements ActionListener{

public static JPanel panel2;
     private JTextField subnetField =null;
 public static JPanel panel3;
public static Font fc;
public static String[] subn;
public static String searchnet;
boolean flag=false;




 public void init() 
{

     String hostname = null;
        String hostaddress=null;

        try {
            InetAddress addr = InetAddress.getLocalHost();

            // Get IP Address

            hostaddress=addr.getHostAddress();

            // Get hostname
           hostname = addr.getHostName();
        } catch (UnknownHostException e) {
        }

        subn= hostaddress.split("\\.");


        System.out.println(subn[2]);

        searchnet=subn[2];






        //WindowDestroyer listener=new WindowDestroyer();
        //addWindowListener(listener);

        Container contentPane = getContentPane();

        contentPane.setBackground(Color.WHITE);
        contentPane.setLayout(new GridLayout(3,0));

        JPanel panel1 =new JPanel(); 
        panel2 =new JPanel();

        panel1.setBackground(Color.WHITE);      
        panel1.setLayout(new BoxLayout(panel1, BoxLayout.Y_AXIS));





        JLabel lb2 = new JLabel("You are at: "+hostname+" "+hostaddress+" ");
        lb2.setFont(new Font("sans-serif",Font.BOLD,15));
        lb2.setForeground(Color.RED);
        JPanel panel1_1 =new JPanel(new GridBagLayout());
        GridBagConstraints c = new GridBagConstraints();

        c.gridx = 1;
        c.gridy = 2;
        panel1_1.setBackground(Color.WHITE);
        panel1_1.add(lb2, c);

        //lb2.setAlignmentX(Component.CENTER_ALIGNMENT);
        //panel1_1.add(lb2, BorderLayout.EAST);
        panel1_1.setAlignmentX(Component.CENTER_ALIGNMENT);
        panel1.add(panel1_1);


        panel3=new JPanel();
         panel3.setLayout(new GridLayout(2,0));
        panel3.setBackground(Color.WHITE);

        panel1.add(panel3); 


        UIManager.put("Button.background", Color.white);
        UIManager.put("Button.foreground", Color.red);
        fc = new Font("sans-serif",Font.BOLD,15);
        UIManager.put("Button.font", fc);

        JButton searchButton= new JButton("Search");
        //Border b = new SoftBevelBorder(BevelBorder.LOWERED) ;
        //searchButton.setBorder(b);

        searchButton.setAlignmentX(Component.CENTER_ALIGNMENT);
        panel1.add(searchButton);
        searchButton.addActionListener(this);


        contentPane.add(panel1);
        panel2.setBackground(Color.WHITE);










        contentPane.add(panel2);
        //contentPane.add(searchButton);

        //JButton closeButton=new JButton("Close");
        //contentPane.add(closeButton);
        //closeButton.addActionListener(this);

        contentPane.setVisible(true);
}











public void actionPerformed(ActionEvent e)
{
    if (e.getActionCommand ().equals ("Close"))
    {
        System.exit(0);
    }


    if (e.getActionCommand ().equals ("Search"))
    {
        panel2.setVisible(false);
        panel2.removeAll();
        panel2.revalidate();

        panel3.setVisible(false);
        panel3.removeAll();
        panel3.revalidate();

       if(flag){
           searchnet=subnetField.getText();
       }



        result(panel2);//puts panel 2&panel 3 in the ui



        panel2.setVisible(true);
        panel3.setVisible(true);
    }


}


















public boolean complete;

public JPanel call(){

    return null;
}

public void result(JPanel pn){

    .

    .
            .

         }
     }




}


private void addColumnName(JPanel pn) {
    // TODO Auto-generated method stub







}











public void addDataToTable(JPanel p, String element, int type){


    ......



}



 private static void open(URI uri) {
        if (Desktop.isDesktopSupported()) {
                Desktop desktop = Desktop.getDesktop();
                try {
                        desktop.browse(uri);
                } catch (Exception e) {
             开发者_Python百科           // TODO: error handling
                }
        } else {
                // TODO: error handling
        }
    }


 public static void main(String[] args){
     ui start=new ui();
     start.setVisible(true);

     JFrame f = new JFrame("Find Device");
     ui applet=new ui();
     applet.init();


     f.setLocationRelativeTo(null);  
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  

        f.setSize(800,450); 
        f.setVisible(true);  


 }

}

then the html file looks like this:

    <html>
    <applet code=ui.class 
    archive="webapplet.jar"
    width=800 height=450>
    </applet>
    </body>
    </html>

when i run the program via eclipse as an applet it runs fine, but when i put it in the html file, the init() seems to show up but the actionlistener on the button never seems to work

Any help would be really appreciated. Thanks!!

ps: will be happy to share any additional details if required


Emm... you mean the code never works as

System.exit(0);

?

If you mean "Close" button inactivity so it shouldn't close Internet Browser ... so that's OK :)

And this one as

InetAddress addr = InetAddress.getLocalHost();

Hmm... As for applet, I guess you should use getCodeBase() instead

Good luck :)

0

精彩评论

暂无评论...
验证码 换一张
取 消