2016-08-01 18 views
0

私は自分自身でJavaでプログラムすることを学んでいますが、ヘルスバーを作成しようとしていますが、健康状態は表示されますが、シンプルな2dゲームのスケルトンを作っていて、そのボタンはコマンドを知るだけです)、健康は落ちません。私はこれが私のCMDに現れる3回ボタンを押すと:JavaのJProgressbarが更新されない、不明なソースエラー

http://i.stack.imgur.com/ydJGJ.png

ここに私のコードです:

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 

public class test{ 

    private static JFrame frame = new JFrame("test"); 

    private static JPanel panel = new JPanel(); 
    private static JPanel panel1 = new JPanel(); 
    private static JPanel panel2 = new JPanel(); 

    private static JButton button1 = new JButton("UP"); 
    private static JButton button2 = new JButton("DN"); 
    private static JButton button3 = new JButton("L"); 
    private static JButton button4 = new JButton("R"); 

    private static JLabel background = new JLabel(new ImageIcon("C:\\Users\\beau\\Downloads\\background.jpg")); 

    private static int startHealth = 20; 
    private static int healthBoost = 0; 
    private static int maxHealth = startHealth + healthBoost; 
    private static int damage = 0; 
    private static int damageTaken; 
    private static int curentHealth; 


    public static void main(String[] args){ 
     //JFrame Properties 
     frame.setSize(900,600); 
     frame.setLocationRelativeTo(null); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setResizable(false); 
     frame.setVisible(true); 


     //shown stuff Properties and Adding 
     damageTaken += damage; 
     curentHealth = maxHealth - damageTaken; 

     JProgressBar health = new JProgressBar(0,curentHealth); 
     health.setStringPainted(true); 
     health.setString(curentHealth + "/" + maxHealth); 
     health.setValue(curentHealth); 

     frame.add(background); 

     panel.setLayout(null); 
     background.setLayout(null); 

     button1.setBounds(61,420,50,50); 
     button2.setBounds(61,520,50,50); 
     button3.setBounds(11,470,50,50); 
     button4.setBounds(111,470,50,50); 
     panel.setBounds(725,0,175,600); 
     health.setBounds(10,20,150,20); 

     panel.add(button1); 
     panel.add(button2); 
     panel.add(button3); 
     panel.add(button4); 
     panel.add(health); 
     background.add(panel); 


     button1.addActionListener (new Action1()); 


     background.revalidate(); 
    } 

    static class Action1 implements ActionListener{ 
     public void actionPerformed (ActionEvent e){ 
      damage = 5; 
      main(new String[] {"a","b","c"}); 
     } 
    } 
    static class Action2 implements ActionListener{ 
     public void actionPerformed (ActionEvent e){ 

     } 
    } 
    static class ActionReset implements ActionListener{ 
     public void actionPerformed (ActionEvent e){ 

     } 
    } 
} 
    import javax.swing.*; 
    import java.awt.*; 
    import java.awt.event.*; 

    public class test{ 

    private static JFrame frame = new JFrame("test"); 

    private static JPanel panel = new JPanel(); 
    private static JPanel panel1 = new JPanel(); 
    private static JPanel panel2 = new JPanel(); 

    private static JButton button1 = new JButton("UP"); 
    private static JButton button2 = new JButton("DN"); 
    private static JButton button3 = new JButton("L"); 
    private static JButton button4 = new JButton("R"); 

    private static JLabel background = new JLabel(new ImageIcon("C:\\Users\\beau\\Downloads\\background.jpg")); 

    private static int startHealth = 20; 
    private static int healthBoost = 0; 
    private static int maxHealth = startHealth + healthBoost; 
    private static int damage = 0; 
    private static int damageTaken; 
    private static int curentHealth; 


    public static void main(String[] args){ 
     //JFrame Properties 
     frame.setSize(900,600); 
     frame.setLocationRelativeTo(null); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setResizable(false); 
     frame.setVisible(true); 


     //shown stuff Properties and Adding 
     damageTaken += damage; 
     curentHealth = maxHealth - damageTaken; 

     JProgressBar health = new JProgressBar(0,curentHealth); 
     health.setStringPainted(true); 
     health.setString(curentHealth + "/" + maxHealth); 
     health.setValue(curentHealth); 

     frame.add(background); 

     panel.setLayout(null); 
     background.setLayout(null); 

     button1.setBounds(61,420,50,50); 
     button2.setBounds(61,520,50,50); 
     button3.setBounds(11,470,50,50); 
     button4.setBounds(111,470,50,50); 
     panel.setBounds(725,0,175,600); 
     health.setBounds(10,20,150,20); 

     panel.add(button1); 
     panel.add(button2); 
     panel.add(button3); 
     panel.add(button4); 
     panel.add(health); 
     background.add(panel); 


     button1.addActionListener (new Action1()); 


     background.revalidate(); 
    } 

    static class Action1 implements ActionListener{ 
     public void actionPerformed (ActionEvent e){ 
      damage = 5; 
      main(new String[] {"a","b","c"}); 
     } 
    } 
    static class Action2 implements ActionListener{ 
     public void actionPerformed (ActionEvent e){ 

     } 
    } 
    static class ActionReset implements ActionListener{ 
     public void actionPerformed (ActionEvent e){ 

     } 
    } 
} 

私はstackoverflow.comにGoogleとたくさんで検索が、i」はdidnの私の問題のように見える問題を見つけることはできません。誰かがこの問題で私を助けてくれますか?

+0

あなたが起こっているかを調べるためにデバッガを使用しようとしましたか? – Jens

+0

'main(new String [] {" a "、" b "、" c "});'あなたの 'ActionListener'で何をすると思いますか? – bradimus

+1

スタックトレースの画像をポストしないでください。テキストをコピーして質問に貼り付け、4つのスペースで字下げすると、書式設定済みのブロックとして表示されます。 (画像はテキスト検索では表示されず、障害のあるユーザーには見えません)。 – VGR

答えて

1

最大値が最小値、下位である場合は、これらの例外を取得:

new JProgressBar(0,-5); 

は、このコードを参照してください:

/** 
    * Initializes value, extent, minimum and maximum. Adjusting is false. 
    * Throws an <code>IllegalArgumentException</code> if the following 
    * constraints aren't satisfied: 
    * <pre> 
    * min &lt;= value &lt;= value+extent &lt;= max 
    * </pre> 
    */ 
    public DefaultBoundedRangeModel(int value, int extent, int min, int max) 
    { 
     if ((max >= min) && 
      (value >= min) && 
      ((value + extent) >= value) && 
      ((value + extent) <= max)) { 
      this.value = value; 
      this.extent = extent; 
      this.min = min; 
      this.max = max; 
     } 
     else { 
      throw new IllegalArgumentException("invalid range properties"); 
     } 
    } 
関連する問題