2011-09-11 12 views
2

私は最初のLWUITおよびJava MEアプリケーションを作成しており、ボタン状態を動作させようとしています。私はリソースエディタでそれを行うことができますが、私は実際に私のコードが動作していない理由を知りたいと思います。私が下にあるコードは一見不規則に振る舞います。最初のボタンを選択すると、正常に動作します。 2番目のボタンを選択すると、そのボタンは選択された状態の前景を持ちますが、選択されていない状態の背景になります。 3番目のボタンも同じです。しかし、最初のボタンに折り返すと、最初のボタンと3番目のボタンの両方が選択された状態のバックグラウンドを持ち、最初のボタンは選択された状態の前景を持ち、3番目のボタンは選択されていない状態の前景です。 チュートリアルやオンラインフォーラムを読んでみましたが、そのほとんどが恐ろしいほど古くなっているようです。公式のLWUITページのチュートリアルでさえも、Netbeansは廃止予定ではなく未解決であることを示すように廃止されたコマンドがあります。私は単純な間違いだと確信していますが、ボタンの状態が変わるたびに選択されたものと選択されていないもののスタイルが変わるのはなぜですか?LWUITのボタン状態の設定

Style buttonUp = new Style(); 
    buttonUp.setAlignment(Component.CENTER); 
    buttonUp.setBgColor(0x0082ff); 
    buttonUp.setFgColor(0xffffff); 
    buttonUp.setMargin(5,5,0,0); 

    Style buttonDown = new Style(); 
    buttonDown.setAlignment(Component.CENTER); 
    buttonDown.setBgColor(0xd7d7ee); 
    buttonDown.setFgColor(0x000000); 
    buttonDown.setMargin(5,5,0,0);   

    Container buttons = new Container(new BoxLayout(BoxLayout.Y_AXIS)); 
    Button firstButton = new Button("first"); 
    firstButton.setUnselectedStyle(buttonUp); 
    firstButton.setSelectedStyle(buttonDown); 
    firstButton.setPressedStyle(buttonDown); 

    Button secondButton = new Button("second"); 
    secondButton.setUnselectedStyle(buttonUp); 
    secondButton.setSelectedStyle(buttonDown); 
    secondButton.setPressedStyle(buttonDown); 

    Button thirdButton = new Button("third"); 
    thirdButton.setUnselectedStyle(buttonUp); 
    thirdButton.setSelectedStyle(buttonDown); 
    thirdButton.setPressedStyle(buttonDown); 

それはコンテナやフォームへのコンテナにボタンを追加しaddComponent通話以外のボタン、を扱う一部でしかありませんので、これは、関連するすべてのコードでなければなりません。

答えて

3

各コンポーネントの状態が単数インスタンスでなければならない、合法でないスタイルオブジェクトインスタンスを再利用しています。

updateButtonTheme(Style); 

をし、としてそれを呼び出す:別の方法としては、メソッドのロジックを実装することができます

button.getUnselectedStyle().setFgColor(...); 

updateButtonTheme(button.getUnselectedStyle()); 
+0

おかげでそれがすることによってこれを行うにはLWUITでより一般的です。私が上記のコードのボタンに境界線を追加したときの奇妙な理由のために、状況はそれ自身解決しました。私は境界線を追加することで違いがないはずだから、 "修正"が実際には問題であったと確信していました。私はあなたが示唆したようにコードを調整し、今は正常に動作します。 – John

関連する問題