Anonymous
Anonymous asked in 電腦與網際網路程式設計 · 2 decades ago

按了甲按鈕產生乙按鈕的問題

各位好,在此請教一項問題:

我想寫一個applet,applet在網頁上的大小是800*600,而在這個applet上,一開始init()時會出現一個按鈕,而按了這個按鈕會出現第二個按鈕,可是我寫了以後第二個出不來…..,請問這有沒有什麼方法可以解決呢??

如果我今天加了public void paint(Graphics g){ },用drawImage()把東西畫出來,接下來我也想用按一個按鈕再出現另一張圖,又要怎如辦到呢?

因為我也試過一些api提供的方法(像printComponents()),可就是不知方法不對還是我根本寫錯了,因為compile也都可以過>0<” ,在此請教有經驗或知道方法的各位:

以下是程式碼:::

import java.applet.*;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class buttonApplet extends Applet implements MouseListener{

Image ic;

ImageIcon icc;

public void init(){

this.setLayout(null);

ic=getImage(getDocumentBase(),"2.jpg");

icc=new ImageIcon(ic);

JButton jb1=new JButton(icc);

jb1.setBounds(0,0,233,211);

this.add(jb1);

}

public void mouseClicked(MouseEvent e){

JButton jb=new JButton(icc);

jb.setBounds(300,300,233,211);

this.add(jb);

}

public void mouseEntered(MouseEvent e) { }

public void mouseExited(MouseEvent e) { }

public void mousePressed(MouseEvent e) {}

public void mouseReleased(MouseEvent e) { }

}

1 Answer

Rating
  • 2 decades ago
    Favorite Answer

    你寫的程式有些問題,

    1. mouseClicked 是滑鼠被按下時會觸發的動作,不是 button 被按下。

    2. 你也未將 這個 MouseListener 加入任可能會有觸發動作的元件。( XXX.addMouseListener( this ); )

    對於按下 button 來說,它會通知的是有向該 button 註冊的 Action Listeners。所以你要寫一個 ActionListener 。 並且把 該 ActionListener 加入 button 的 listener list 之中。

    最後,你還呼叫 applet 告訴 applet 需要重繪,它才會將 第二個 button 繪出。

    以下的程式提供給你參考用。

    import java.applet.Applet;

    import java.awt.event.ActionEvent;

    import java.awt.event.ActionListener;

    import javax.swing.JButton;

    public class TestApplet extends Applet {

      

      private static final long

          serialVersionUID = 4682692481158666282L;

      public void init() {

        JButton firstButton = new JButton( "Click on me!!" );

        this.setLayout( null );

        firstButton.setBounds( 0, 0, 233, 211 );

        this.add( firstButton );

        firstButton.addActionListener( new ActionListener() {

          public void actionPerformed(ActionEvent e) {

            JButton secondButton = new JButton( "Hello" );

            secondButton.setBounds( 300, 300, 233, 211 );

            TestApplet.this.add( secondButton );    

            TestApplet.this.repaint();

          }    

        });

      }

    }

Still have questions? Get your answers by asking now.