在jTable中选择练习时在帧之间切换 [英] Switch between frames when select exercise in jTable

查看:21
本文介绍了在jTable中选择练习时在帧之间切换的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在构建一个打字程序,我已经制作了一个带有练习打字的列表

I'm building an Typing program and i have made an list with exercises to type

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 中

those exercises are shown in an jTable on my frame

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

在这个框架上甚至添加了一个 jButton

and on this frame there is even add an jButton

现在是我的问题:

我想在表格中选择一个练习时添加一个在此按钮上执行的动作,然后单击按钮(选择练习时)您移动到一个新框架以输入练习,但我不知道我该怎么做这样做

i want to add a actionperformed on this button when a exercise is selected in the table and you click to button(when the exercise is selected) you move to a new frame to type the exercise but i have no idea how i can do this

推荐答案

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

To put you in the right direction a small piece of sample code (minus the imports) which creates a JFrame where the contents of the main panel is controlled by the selection in the JList. The example shows how to react on selection changes in the JList, and shows an alternative for constantly opening new windows, which is a terrible user experience.

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

      }
    } );
  }
}

这篇关于在jTable中选择练习时在帧之间切换的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆