2011-01-23 6 views
0

解決策は、forループを使用して配列をステップ実行し、ペインに表示することです。しかし、私はこれについて簡単な説明を見つけることはない。私は各配列要素を表示する次のボタンと前のボタンが必要で、次のボタンが押されたときに最後に到達すると最初の要素に戻ります。Java JOptionPaneがアレイをステッピングする

for (int i = 0; i < initem.length; i++){ 
      JOptionPane.showMessageDialog(null, initem[i]); 
} 

initemは私の配列の名前です。

株式会社ActionListerner

class RecordViewer extends JDialog 
{ 
private JButton next; 
private JButton prev; 
private JLabel label = new JLabel(); 
private int current = 0; 
private CDinventoryItem [] items; 



public RecordViewer(CDinventoryItem [] array){ 

super(); 
items = array; 

label = this.setLabel(items[Current()]); 
next = new JButton("Next"); 
next.addActionListener(new ActionListener(){ 

    public void actionPerformed(ActionEvent e){ 
     if(getCurrent() == items.length){ 
       setCurrent(0); 
     }else{ 
       setCurrent(getCurrent() + 1); 
     } 
      setTitle("Inventory Item"); 
      setSize(1200, 300); 
      setLocation(200,200); 
      setDefaultCloseOperation(DISPOSE_ON_CLOSE); 
      getLabel().setText(items[getCurrent()].toString()); 
    } 
}); 

prev = new JButton("Previous"); 
prev.addActionListener(new ActionListener(){ 

    public void actionPerformed(ActionEvent e){ 
     if(getCurrent() == 0){ 
       setCurrent(items.length - 1); 
     }else{ 
       setCurrent(getCurrent() - 1); 
     } 
      setTitle("Inventory Item"); 
      setSize(1200, 300); 
      setLocation(200,200); 
      setDefaultCloseOperation(DISPOSE_ON_CLOSE); 
      getLabel().setText(items[getCurrent()].toString()); 
    } 
}); 

setLayout(new FlowLayout()); 
add(label); 
add(next); 
add(prev); 
pack(); 

this.setVisible(true); 
} 

public JButton getNext() { 
    return next; 
} 

public void setNext(JButton next) { 
    this.next = next; 
} 

public JButton getPrev() { 
    return prev; 
} 

public void setPrev(JButton prev) { 
    this.prev = prev; 
} 

public JLabel getLabel() { 
    return label; 
} 


private int getCurrent() { 
    return current; 
} 

public void setCurrent(int current) { 
    this.current = current; 
} 

private JLabel setLabel(CDinventoryItem cDinventoryItem) { 
    return label; 
} 

private int Current() { 
    return current; 

}} 
+0

このダイアログは何ですか? –

+0

ダイアログボックスに文字列int、int、doubleが表示されます。initem – user569127

答えて

1

は、すべての余分な詳細を残し単純な例です。

import java.awt.FlowLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.JButton; 
import javax.swing.JDialog; 
import javax.swing.JLabel; 

public class RecordViewer extends JDialog { 

String items[] = {"One", "Two", "Three"}; 
JButton next, prev; 
JLabel label; 
int current; 

public RecordViewer(){ 
    super(); 
    current = 0; 
    label = new JLabel(items[current]); 
    next = new JButton("Next"); 
    next.addActionListener(new ActionListener(){ 
     public void actionPerformed(ActionEvent e){ 
      if(current == items.length - 1){ 
       current = 0; 
      }else{ 
       current++; 
      } 
      label.setText(items[current]); 
     } 
    }); 

    prev = new JButton("Previous"); 
    prev.addActionListener(new ActionListener(){ 
     public void actionPerformed(ActionEvent e){ 
      if(current == 0){ 
       current = items.length - 1; 
      }else{ 
       current--; 
      } 
      label.setText(items[current]); 
     } 
    }); 

    setLayout(new FlowLayout()); 
    add(label); 
    add(next); 
    add(prev); 
    pack(); 
    this.setVisible(true); 
    } 
} 

あなたが呼び出すことができます。このダイアログを表示するには、次の

new RecordViewer(); 

この例では、2つのボタンとシンプルなレイアウトを使用してアレイを通じてサイクルを単純な文字列の配列を使用して簡単に。配列を変更して配列を表示し、より高度なレイアウトを使用してより見栄えを向上させることができます。


UPDATE:

public class RecordViewer extends JDialog { 

    JButton next, prev; 
    JLabel label; 
    int current; 
    CDinventoryItem [] items; 

    public RecordViewer(CDinventoryItem [] array) 
    { 
    super(); 
    current = 0; 
    items = array; 
    .... 

をそして、それは場合に役立ちます参照してください。

あなたはこれを試すことができます。

+0

これはおそらく簡単な説明です。私がやったことにそれを組み入れようとすると、私にとっては困難になります。 – user569127

+0

興味深いことに、私は自分の問題を探求しています。何が得られますか?私のポストはここに来る。だから明らかにこの問題はあまり扱われていません... – user569127

+0

私はこれについて助けを得ないと思う............. – user569127

1

あなたのループは、配列内のアイテムごとに一度ペインを表示するために起こっている、それはあなたが望むものではありません。

選択した値を取得しようとしているようです。その場合は、dialog Dialogの代わりにinputDialogを使用し、配列全体を渡します。ここで

はAPIからの例です。ここで

Object selectedValue = JOptionPane.showInputDialog(null, 
"Choose one", "Input", 
JOptionPane.INFORMATION_MESSAGE, null, 
possibleValues, possibleValues[0]); 
+0

いいえ配列の最初の要素を表示し、次のボタンを使用して配列の次の項目を一覧表示するだけです。データはすでにアレイ作成から入力されています。 – user569127

+1

[次へ]ボタンはどこですか? JOptionPaneを使用する代わりに、あなた自身のJDialogを作成する必要があるように思えます。 – jzd

+0

うん、ちょうどそれをやろうとしている別の参考資料をまっすぐ7時間過ごした。すべては、次のレコードを表示するための次のボタンを作成するだけではなく、はるかに複雑なものの過度に冗長な例でした。 – user569127

関連する問題