2017-08-15 15 views
1

私はちょうどjlabelを数えたいと思う。私は、サイトに投稿されたすべてのソリューションを試しましたが、解決策を見つけることができませんでした。私は初心者ですが、Javaを学ぶのに1ヶ月あります。私の質問があまりにも愚かであれば申し訳ありません。JLabelで変数を変更できないのはなぜですか?

package asdf; 
import java.awt.EventQueue; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.Timer; 
import javax.swing.JLabel; 

public class asd extends JFrame implements ActionListener { 
int a=0; // variable 
private JFrame frame; 

/** 
* Launch the application. 
*/ 
public static void main(String[] args) { 
    EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      try { 
       asd window = new asd(); 
       window.frame.setVisible(true); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 
} 

/** 
* Create the application. 
*/ 
public asd() { 
    super(); 
    Timer time=new Timer(1000, this); 
    time.start(); 
    initialize(); 
} 

/** 
* Initialize the contents of the frame. 
*/ 
private void initialize() { 

    frame = new JFrame(); 
    frame.setBounds(100, 100, 450, 300); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.getContentPane().setLayout(null); 

    JPanel panel = new JPanel(); 
    panel.setBounds(20, 11, 137, 111); 
    frame.getContentPane().add(panel); 
    panel.setLayout(null); 

    ***JLabel Jtable = new JLabel(); 
    Jtable.setBounds(0, 25, 127, 58); 
    Jtable.setText("" + a); 
    panel.add(Jtable);*** 

    System.out.println(a); //it is counting on console but in Jlabel variable is not. 

} 

@Override 
public void actionPerformed(ActionEvent arg0) { 
    a++; 
    initialize(); 
} 
} 

jlabelを数えたいだけです。私は、サイトに投稿されたすべてのソリューションを試しましたが、解決策を見つけることができませんでした。私は初心者ですが、Javaを学ぶのに1ヶ月あります。私の質問があまりにも愚かであれば申し訳ありません。

+0

を経由して、これを行うことができますか? –

+0

クラスがロードされるときにinitialize()メソッドを1回だけ呼び出すことをお勧めします。その後、Jtable.setText()をactionPerformed()メソッドに移動します。 あなたのクラスは[サブクラス化] JFrameを拡張していますが、 "this"はJFrameのインスタンスにする必要があります。つまり、initialize()メソッドで "this.setBounds()"のような文を使用できます。 また、小文字で始まる変数の名前を付けることをお勧めします。 [JTableの代わりにjTable] – Jeremy

+0

こんにちは@ Eee http://www.oracle.com/technetwork/java/codeconventions-135099.htmlに指定されているJava命名規則に従ってください。答えは – abcOfJavaAndCPP

答えて

0

新しいフレームを初期化してはならず、すべてのアクションですべてのコンポーネントが実行されるべきで、ラベルのテキストのみを更新する必要があります。あなたが変更したい変数の名前** **は何JLabel.setText https://docs.oracle.com/javase/7/docs/api/javax/swing/JLabel.html#setText(java.lang.String)

int a = 0; // variable 
private JFrame frame; 

/** 
* Launch the application. 
*/ 
public static void main(String[] args) { 
    EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      try { 
       asd window = new asd(); 
       window.frame.setVisible(true); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 
} 

/** 
* Create the application. 
*/ 
public asd() { 
    super(); 
    Timer time=new Timer(1000, this); 
    time.start(); 
    initialize(); 
} 

/** 
* Initialize the contents of the frame. 
*/ 

private JLabel label; 
private void initialize() { 

    frame = new JFrame(); 
    frame.setBounds(100, 100, 450, 300); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.getContentPane().setLayout(null); 

    JPanel panel = new JPanel(); 
    panel.setBounds(20, 11, 137, 111); 
    frame.getContentPane().add(panel); 
    panel.setLayout(null); 

    label = new JLabel(); 
    label.setBounds(0, 25, 127, 58); 
    label.setText("" + a); 
    panel.add(label); 

    System.out.println(a); //it is counting on console but in Jlabel variable is not. 

} 

@Override 
public void actionPerformed(ActionEvent arg0) { 
    a++; 

    label.setText("" + a); 

} 
+0

億回ありがとうございます。前に試したところ、「ラベルは解決できません」というエラーがありました。私は一日中一杯食べる。私はそれを書くために働いた一日中: "ラベル=新しいJLabel();"十億回ありがとうございます。あなたは英雄です。あなたは本当のJon Snowです。 – Eee

+0

@問題ありません。あなたがそれに満足しているなら、これを受け入れられた答えとしてください。 – user

関連する問題