2012-01-16 85 views
0

問題1:設置一個按鈕的動作偵聽器的大小

我想我的設置按鈕的大小,但似乎並沒有改變,而總是充滿整個屏幕,這是不是有什麼我想要。

問題2:

當我添加了公共無效actionPerformed1(ActionEvent的五)與我的消息,這似乎並沒有顯示出來。也許是因爲按鈕填滿了整個空間,但我真的不知道。

下面是按鈕的代碼:

import java.awt.event.*; 

import javax.swing.*; 
import java.awt.*; 
    public class HockeyGame extends JFrame implements 
     ActionListener, KeyListener, Runnable, WindowListener //, ActionListener 
     { 
     Thread t; 
     int xpuck, ypuck,xspeed,yspeed,gx,gy,redx2,redy2,lg,rg, redscore, bluescore, 
      redx,redy, gx2, gy2, bluex, bluey,bluex2,bluey2,rg2,lg2; 
     //int SQUARE_SIZE=10; 
     public HockeyGame () { 

      } 

     public static void main (String [ ] commandLine) { 
      HockeyGame hg=new HockeyGame(); 
      hg.init(); 
     } 

     public void actionPerformed1(ActionEvent e) { 
      JOptionPane.showMessageDialog(null,"testing"); 
     } 
     public void init() { 
      Button b;   
      b = new Button("Click me"); 
      b.addActionListener(this); 
      b.setSize(40, 40); 
      add(b); 
      t=new Thread(this); 
      this.addKeyListener(this); 
      this.setFocusable(true); 
      setSize(700,700); 
      setVisible (true); 

任何幫助appreciatedasd

+4

1)爲了更好地提供幫助,請發佈[SSCCE](http://sscce.org/)。 2)請使用普通的Java命名法(例如'ypuck' - >'yPuck')3)**不要設置按鈕的大小**而是使用佈局,填充和佈局間距將按鈕放在需要的位置在所需的大小。 4)使用密鑰綁定而不是'KeyListener'。 5)在EDT上創建和更改GUI。 6)'JOptionPane.showMessageDialog(null,「testing」);'應該是'JOptionPane.showMessageDialog(this,「testing」);'7)'JFrame'內容窗格的默認佈局是'BorderLayout',一個組件沒有約束被添加到'CENTER' – 2012-01-16 01:07:26

+2

我同意安德魯發佈的所有內容,並將添加:閱讀[佈局管理器教程](http://docs.oracle.com/javase/tutorial/uiswing/layout/index.html)因爲你的問題是由於對他們的工作缺乏瞭解所致。 – 2012-01-16 01:14:02

+0

另外,如果您有兩個不同的問題,請將它們作爲單獨的問題發佈 – SJuan76 2012-01-16 01:24:55

回答

2

先從簡單的練習,使你的基礎知識強。

1)由於內容窗格的默認佈局是「邊界佈局」,因此您的按鈕填滿了空間。將佈局設置爲流佈局或其他。

2)函數名應該與Action Listener中定義的完全相同。


public void actionPerformed(ActionEvent e) 
{} 

無論我說什麼都會有意義的,直到你有了基礎知識。