2012-01-09 32 views
0
选择锻炼

我建立一个打字计划,我已与演习的清单输入帧之间切换时JTable中

public class OefeningenListModel extends AbstractListModel { 

    private JComboBox time;     //time combo box to select time 


    public OefeningenListModel() { 
     oefeningen = new ArrayList<Oefening>(); 
     Oefening o1 = new Oefening("1", "Oefening HJ"); 
     Oefening o2 = new Oefening("2", "Oefening KL"); 
     Oefening o3 = new Oefening("3", "Oefening JH"); 
oefeningen.add(o1);   
oefeningen.add(o2); 
oefeningen.add(o3); 
    } 

这些演习显示在JTable中我的框架上

public BasisSchermm() { 
     initComponents(); 
     jList1.setModel(new OefeningenListModel()); 

这个框架上,甚至有添加的JButton

现在是我的问题:

我当在表格中选择一个练习并且你点击按钮时(当选择练习时),你想添加一个动作执行在这个按钮上,你移动到一个新的框架来输入练习,但我不知道我怎么能做到这一点

+0

所以你想从列表中选择一个项目,并根据选择的项目,打开一个新的框架? – jere 2012-01-09 12:39:28

+0

是的,这就是我想要的 – user1138629 2012-01-09 12:40:08

+1

开始阅读你的教科书和/或一个基本的教程,如f.i. http://docs.oracle.com/javase/tutorial/uiswing/components/list.html。从那里开始,描述你到底在哪里被困住。最好与一个SSCCE :-) – kleopatra 2012-01-09 12:41:28

回答

0

让你JList中所选择的项目,你可以这样做:

// Get the index of the selected item 
int selectedIndex = jList1.getSelectedIndex(); 

// Get the selected item from the model 
Object sel = jList1.getModel().getElementAt(selectedIndex); 

或者如果需要的话,你可以将它转换为你需要的类型:

Oefening selectedItem = (Oefening) list.getModel().getElementAt(selectedIndex); 

添加动作监听:

ActionListener actionListener = new ActionListener() { 
     public void actionPerformed(ActionEvent actionEvent) { 
     if (xItemIsSelected) { 
      //open 'x' frame 
      new xFrame().show(); 
     } 

     if (yItemIsSelected) { 
      //open 'y' frame 
      new yFrame().show(); 
     } 
     } 
    }; 

//add the listener to the button 
button.addActionListener(actionListener); 
0

为了让您在正确的方向上创建一个JFrame的小样片代码(减去进口),其中主面板的内容由JList中的选择控制。该示例显示了如何对JList中的选择更改做出反应,并显示了一个用于不断打开新窗口的替代方法,这是一种糟糕的用户体验。

public class ListSelectionExample { 

    private static String[] MODEL_CONTENTS = new String[]{"String1","String2","String3"}; 

    public static void main(String[] args) throws InvocationTargetException, InterruptedException { 

    EventQueue.invokeAndWait(new Runnable() { 
     @Override 
     public void run() { 

     JFrame frame = new JFrame("TestFrame"); 

     //create a JList 
     final JList list = new JList(); 
     DefaultListModel listModel = new DefaultListModel(); 
     for (String modelContents : MODEL_CONTENTS) { 
      listModel.addElement(modelContents); 
     } 
     list.setModel(listModel); 
     list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 

     //use a CardLayout to switch between different labels 
     final CardLayout cardLayout = new CardLayout(); 
     final JPanel contentPane = new JPanel(cardLayout); 
     for (String label_content : MODEL_CONTENTS) { 
      contentPane.add(new JLabel(label_content), label_content); 
     } 
     cardLayout.show(contentPane, MODEL_CONTENTS[0]); 

     //when the list selection is changed, switch the contents of the JPanel 
     list.addListSelectionListener(new ListSelectionListener() { 
      @Override 
      public void valueChanged(ListSelectionEvent aListSelectionEvent) { 
      int selectedIndex = list.getSelectedIndex(); 
      String modelElement = (String) list.getModel().getElementAt(selectedIndex); 
      cardLayout.show(contentPane, modelElement); 
      } 
     }); 

     frame.getContentPane().add(list, BorderLayout.EAST); 
     frame.getContentPane().add(contentPane, BorderLayout.CENTER); 

     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.pack(); 
     frame.setVisible(true); 

     } 
    }); 
    } 
}