0

クリック可能にしたい次のラベルフィールドがあり、そのフォーカス/フォーカス解除イベントもキャッチ/処理します。

titleField = new LabelField(title,FOCUSABLE|USE_ALL_WIDTH){
            public void paint(Graphics graphics)
            {
                graphics.setColor(Color.BLUE);
                graphics.drawText(_title, 30,0);
                super.paint(graphics);
            }

             protected boolean navigationClick(int status,int time)
                {
                    if(panel != null) panel.takeAction();
                    return true;
                }

                protected void onFocus(int dir)
                {
                    super.onFocus(dir);
                    panel.setSelectedIndex(_index); 
                }

                protected void onUnfocus()
                {
                    if(!_collapse){
                    _prevIndex = _index;
                    panel.setPreviousSelectedIndex(_prevIndex);
                    }
                }
        };

これまでのところ、コードは os5 シミュレーターで期待どおりに動作しますが、os6/7 シミュレーターでは、ラベルフィールドが空白に見えるだけです (super.paint(graphics); 呼び出しを削除しようとしましたが、それでも同じ結果が得られました)。何が起こっているのですか?ありがとう

4

2 に答える 2

2

フィールドを変更するたびに、ラベルを削除drawTextして呼び出すことをお勧めします。setText_title

super.onUnfocus()また、再描画の問題の原因とは呼ばないこともわかります。

于 2012-06-04T15:12:55.597 に答える
1

私はそれを理解しました...実際に私のレイアウト(水平)にはチェックボックスフィールドとラベルフィールドがあります..いくつかの奇妙な理由で、USE_ALL_WIDTHを指定していないにもかかわらず、チェックボックスフィールドがos6/7シミュレーターのすべての水平スペースを占めています。レイアウトをオーバーライドし、チェックボックス フィールドのサイズを指定することで、レイアウトが適切に動作するようになりました。ヒントをありがとう:)

于 2012-06-05T02:31:35.170 に答える