循环动态创建JTextField [英] Create JTextField dynamically in a loop

查看:296
本文介绍了循环动态创建JTextField的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是Java GUI的初学者.我正在编写一个程序,计算给定矩阵的逆.为此,首先我必须扫描矩阵.我决定通过这种方式扫描矩阵:

I am beginner on Java GUI. I am writing a program that calculates the inverse of the given matrix. To do this, first i have to scan matrix. I decided to scan matrix by this way:

首先,我要问用户方形矩阵的行数或列数.当用户输入数字并单击Tamam按钮时,我要创建一个小NxN JTextField的.

First i am asking user the count of row or column of square matrix. When user enters a number and clicks Tamam button i want to create little NxN JTextField 's.

因此,用户将能够轻松输入矩阵的每个元素.我想问的是:我无法创建NxN JTextField.我的代码:

So user will be able to enter each element of matrix easily. What i want to ask is this: I am unable to create NxN JTextField's. My code:

private void jButtonRowCntMouseClicked(java.awt.event.MouseEvent evt) {                                           
        int i,j;
        if(jTextFieldRowCnt.getText() != null){
            String cnt = jTextFieldRowCnt.getText();
            Integer rowCnt = Integer.parseInt(cnt);                      
            for(i=0;i<rowCnt;i++){
                for(j=0;j<rowCnt;j++){
                      JTextField textField = new JTextField();
                      this.add(textField);
                      pack();
                }
            }
        }
    } 

但是不幸的是,我无法做到.我要去哪里错了?

But unfortunately, I could not make it. Where am I going wrong?

我的另一个问题是,如何设置NxN个JTextField s的位置?

My another question is that, how can I set locations of NxN JTextFields?

推荐答案

import java.awt.Dimension;
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import java.awt.Insets;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.ArrayList;
    import java.util.List;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
    import javax.swing.border.LineBorder;

    public class Test 
    {
        // Field members
        static JPanel panel = new JPanel();
        static Integer indexer = 1;
        static List<JTextField> listOfTextFields = new ArrayList<JTextField>();

        public static void main(String[] args)
        {       
            // Construct frame
            JFrame frame = new JFrame();
            frame.setLayout(new GridBagLayout());
            frame.setPreferredSize(new Dimension(990, 990));
            frame.setTitle("My Example");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            // Frame constraints
            GridBagConstraints frameConstraints = new GridBagConstraints();

            // Construct button
            JButton addButton = new JButton("test");
            addButton.addActionListener(new ButtonListener());

            // Add button to frame
            frameConstraints.gridx = 0;
            frameConstraints.gridy = 0;
            frame.add(addButton, frameConstraints);

            // Construct panel
            panel.setPreferredSize(new Dimension(600, 600));
            panel.setLayout(new GridBagLayout());
            panel.setBorder(LineBorder.createBlackLineBorder());

            // Add panel to frame
            frameConstraints.gridx = 0;
            frameConstraints.gridy = 1;
            frameConstraints.weighty = 1;
            frame.add(panel, frameConstraints);

            // Pack frame
            frame.pack();

            // Make frame visible
            frame.setVisible(true);
        }

        static class ButtonListener implements ActionListener
        {
            @Override
            public void actionPerformed(ActionEvent arg0) 
            {       

                panel.removeAll();
                GridBagConstraints textFieldConstraints = new GridBagConstraints();

                int rowCnt=4,i,j;

                for(i=0;i<rowCnt;i++){
                    for(j=0;j<rowCnt;j++){
                        JTextField g=new JTextField();
                        g.setText("7");
                        textFieldConstraints.gridx = i;
                        textFieldConstraints.fill = GridBagConstraints.HORIZONTAL;
                        textFieldConstraints.weightx = 0.5;
                        textFieldConstraints.insets = new Insets(10, 10, 10, 10);
                        textFieldConstraints.gridy = j;
                        panel.add(g, textFieldConstraints);
                    }
                }

                panel.updateUI();
            }


        }
    }

尝试一下并得到您想要的

try this and get what you want

这篇关于循环动态创建JTextField的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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