2011-01-23 51 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

此对话框的作用是什么? – 2011-01-23 23:22:26

+0

该对话框显示一个字符串,int,int,来自数组initem的双精度 – user569127 2011-01-23 23:23:42

回答

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(); 

该实施例通过使用两个按钮和一个简单的布局数组使用一个简单的字符串数组和简单地循环。您可以对其进行修改以显示阵列,并使用更高级的布局使其看起来更好。


UPDATE:

你可以试试这个:

public class RecordViewer extends JDialog { 

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

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

,看看有没有帮助。

1

你的循环将每个项目在数组中一次显示窗格,这是不是你想要的。

这听起来像你正试图获得选定的价值。在这种情况下,使用inputDialog而不是消息Dialog并传递整个数组。

下面是来自API的例子:

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

不,我只是希望它显示数组中的第一个元素,然后使用下一个按钮列出数组中的下一个项目。数据已经从数组创建中输入。 – user569127 2011-01-23 23:32:52