1

コマンドの配列に基づいてリストを作成し、一部のコマンドのテキストがリストに完全に表示されていない場合、リストpreferredWidthはフォームpreferredWidthに設定されていますが、それらをティッカーする方法は?

どうもありがとうございました

4

2 に答える 2

1

以下のクラスを midlet クラスに追加するか、そのための新しいクラス ファイルを作成します。

class TickerRenderer extends DefaultListCellRenderer {

private DefaultListCellRenderer selectedRenderer = new DefaultListCellRenderer(false);
private List parentList;

public TickerRenderer() {
    super(false);
}

public boolean animate() {
    if (parentList != null && parentList.getComponentForm() != null) {
        if (selectedRenderer.isTickerRunning()) {
            if (selectedRenderer.animate()) {
                parentList.repaint();
            }
        }
    }
    return super.animate();
}

public Component getListCellRendererComponent(List list, Object value, int index, boolean isSelected) {
    if (isSelected) {
        selectedRenderer.getListCellRendererComponent(list, value, index, isSelected);

        // sometimes the list asks for a dummy selected value for size calculations and this might
        // break the tickering state
        if (index == list.getSelectedIndex()) {
            if (selectedRenderer.shouldTickerStart()) {
                if (!selectedRenderer.isTickerRunning()) {
                    parentList = list;
                    list.getComponentForm().registerAnimated(this);
                    selectedRenderer.startTicker(UIManager.getInstance().getLookAndFeel().getTickerSpeed(), true);
                }
            } else {
                if (selectedRenderer.isTickerRunning()) {
                    selectedRenderer.stopTicker();
                }
            }
        }
        return selectedRenderer;
    } else {
        return super.getListCellRendererComponent(list, value, index, isSelected);
    }
}
}

次のように使用します。

List cmdList = new List(cmds);
cmdList.setListCellRenderer(new TickerRenderer());
于 2011-06-09T13:49:39.227 に答える
0

このコードを試してみてください。[リストを表示]コマンドをクリックするとダイアログボックスにリストが表示され、最初はティッカーも有効になります。以下は、リストがダイアログに含まれている場合に、上記のクラスを使用してリスト内のティッカーを表示する方法を示すコードです。

内部クラスで使用できるように、リストを最終的にすることを忘れないでください。

form.addCommand(new Command("Show list") { // add command in form and override its actionPerformed method
     public void actionPerformed(ActionEvent evt) {
         Dialog d = new Dialog() {  // create an instance of dialog and make it an inner class so that you can override onShow() method and set focus on list when dialog gets initialized and also can set its index to ur preferred one (here it's 0)
             protected void onShow() { // overriding of onShow() method
                 list.requestFocus();  // set focus on list
                 list.setSelectedIndex(0);  // set selected index to 0
             }
         };
         d.addComponent(list);  // add list in dialog
         d.show();  // show dialog
    } 
 });

このコードはダイアログに私のリストを表示し、最初にティッカーを開始します。それが役に立たない場合は、あなたのコードを投稿してください、私はそれを見ようとします。

于 2011-06-15T12:55:09.857 に答える