2011-10-27 7 views
4

デフォルトでは、Netbeansのオブジェクトの時計/変数を表示するときに、値の代わりにアドレスが表示されます。変数を拡張して実際の値(Double、Integer、Dateなど)を見なければならないので、これはかなり面倒です。それが判明したように、Netbeansは "可変フォーマッタ"を持っていますが、私が見つけることができるドキュメントはほとんどありません。Netbeans Variable Formatterの使い方は?

Watches/Variablesウィンドウで人間が読める形式の単純なDate変数?私は、「変数フォーマッタの編集」ダイアログを完全に理解していません。

私は適切に次のコードスニペットを使用してダブルと整数のためにそれを行うことができました: toString()

ので、コードがダブル/ Integerクラスのコンテキストで実行するようです。私のような、より高度な何かをする必要があるかどうかはどのように実際の変数を参照します:「表示変数を:変数では

return DateHelpers.formatDate(dateVariableName??, "yyyy-MM-dd"); 

答えて

6

を表示、あなたはツールチップが言う(左上の)小さな$アイコンを持っていますtoString()または書式設定された値としての値です。

これをクリックすると、それらの変数の「値」が表示されます。

編集:可変フォーマッタを追加したい場合は非常に簡単です。変数フォーマッタビューで、 "Add ..."ボタンをクリックしてください:

  • "フォーマッタ名"にフォーマッタの名前を入れてください。 "My Date formatter"
  • "クラスタイプ"はあなたの完全なクラス名を入れます。 java.util.Date
  • 「コードスニペットの結果としてフォーマットされた値」を選択し、適用するコードを入力します。例えば:

toString()

いますが、データを操作したりすることができますいくつかの他の事を表示したい場合。たとえば、次のようになります。

toString() + " (" + getTime() + ")" 

時刻を人間が判読可能な形式で表示し、時間を長く表示します。

フォーマッタを適用するビューで$アイコンを選択することを忘れないでください。

+1

はどのようにしていることを見逃して一体でありませんでした!誤ってオフにしている必要があります。ありがとう!ダイアログ内の変数(書式設定を処理する)にパラメータとして変数を渡すことは可能ですか?いくつかのデフォルト名がありますか? – AtliB

+0

ごめんなさい、私も知りたいですが、私はしません。 –

1

文字列を返す限り、さらに複雑なコードを変数フォーマッタに配置することもできます。私は2人の文字列のメンバー、名前と姓を持つクラスを持っている場合たとえば、私がでfollwingコードを貼り付けることができ、「フォーマットされた値..」ボックス:

String result; 
if (name != null) { 
    result = name + " " + surname; 
} else { 
    result = "<null>"; 
} 
return result; 

...と子供の名前と姓として表示します別にあなたは、たとえば、String []型を返すために、ボックス「として..表示チルドレン」のコードを貼り付けることができます。これは、名前と姓を持つ変数のデバッグウィンドウでの子として二つのノードが表示されます

String[] results = new String[2]; 
results[0] = "name: " + name; 
results[1] = "surname: " + surname; 
return results; 

2

私の答えは質問を解決しません。以前の答えをむしろエコーします。まず、NetBeansの変数パネルに$記号が表示されていません。現在のバージョンではコンテキストメニューに置き換えられたようだ。

「変数フォーマッタ」ダイアログ内で、変数をデバッグする方法について、実際の質問に対する回答が見つかりませんでした。 "this"や "$ 1"のようなものが間違いなく働いています。また、この施設では、SimpleDateFormatterのような標準Java JREクラスについては認識していないようです。

Java JREクラスをデバッグするときに、パブリックメソッドに関して提供しているものと一緒に暮らす必要があると思います。

バージョン8以下のJDK(私として)に悩まされている場合は、特にユーザーフレンドリーなDateクラスの回避策があります。次のスニペットのいずれかを使用する「コードスニペットの結果としてフォーマット値」の下

java.util.Date 

:ちょうど入るeditfield「クラスの型」に続いて

Tools > Options > Java > Variable Formatters > Add 

経由でNetBeansで新しい変数フォーマッタを作成します。

// German format - "dd.MM.yyyy hh:mm" 
((getDate() < 10) ? ("0" + getDate()) : getDate()) + "." + ((getMonth() < 9) ? ("0" + (getMonth() + 1)) : (getMonth() + 1)) + "." + (getYear() + 1900) + " " + ((getHours() < 10) ? "0" + getHours() : getHours()) + ":" + ((getMinutes() < 10) ? "0" + getMinutes() : getMinutes()) + ":" + ((getSeconds() < 10) ? "0" + getSeconds() : getSeconds()) 

// US format - "MM/dd/yyyy hh:mm" 
((getMonth() < 9) ? ("0" + (getMonth() + 1)) : (getMonth() + 1)) + "/" + ((getDate() < 10) ? ("0" + getDate()) : getDate()) + "/" + (getYear() + 1900) + " " + ((getHours() < 10) ? "0" + getHours() : getHours()) + ":" + ((getMinutes() < 10) ? "0" + getMinutes() : getMinutes()) + ":" + ((getSeconds() < 10) ? "0" + getSeconds() : getSeconds()) 

// ISO-8601 - "yyyy-MM-dd hh:mm" 
(getYear() + 1900) + "-" + ((getMonth() < 9) ? ("0" + (getMonth() + 1)) : (getMonth() + 1)) + "-" + ((getDate() < 10) ? ("0" + getDate()) : getDate()) + " " + ((getHours() < 10) ? ("0" + getHours()) : getHours()) + ":" + ((getMinutes() < 10) ? ("0" + getMinutes()) : getMinutes()) + ":" + ((getSeconds() < 10) ? ("0" + getSeconds()) : getSeconds()) 

次のスニペット

も便利になることができ、あなたのjava.util.Calendarのインスタンスのデバッグ出力やり過ぎで失われたとき:

// German format - "dd.MM.yyyy hh:mm" 
((get(5) < 10) ? ("0" + get(5)) : get(5)) + "." + ((get(2) < 9) ? ("0" + (get(2) + 1)) : (get(2) + 1)) + "." + (get(1)) + " " + ((get(10) < 10) ? "0" + get(10) : get(10)) + ":" + ((get(12) < 10) ? "0" + get(12) : get(12)) + ":" + ((get(13) < 10) ? "0" + get(13) : get(13)) 
+0

netbeans 8では、$ sign機能はテーブルモードの変数ウォッチビューの余分な列として直接利用できるようです – Dfaure

+0

入手しました。ありがとう。それにもかかわらず、カレンダークラスに関する上記の例では、その列の中に意味のある値を入れるために、図示のような変数フォーマッタが必要です。元の質問を再度参照するには、デバッグしようとしているインスタンスのクラスは、常に、たとえば次のようなメソッドを提供する必要があります。 getValue()を使用して変数フォーマッタで処理します。 – user3469861