java - 在循环中动态创建 JTextField

标签 java swing user-interface jtextfield

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

enter image description here

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

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

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

但是很遗憾,我没能做到。我哪里错了?

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

最佳答案

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


        }
    }

试试这个,得到你想要的

关于java - 在循环中动态创建 JTextField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16591305/

相关文章:

java - 通过 YouTube 数据 API 进行编程注释

java - 我有一个 JApplet,它必须显示 3 个组件。 (2 个 JPanel 和 1 个 Paint 方法)

Java Swing 错误渲染 GUI 元素(Windows 8.1)?

java - 使用SwingWorker动态加载jTable中的大数据

java - 在 Intellij 中导入 Scala 库时出现问题

java - 如何使用Filter对servlet生成的cookie进行加密?

java - 将 fragment 添加到 ViewGroup

java - 当我在主方法中创建 GUI 时,它似乎没有显示

java - 摩尔斯电码应用程序(JAVA Gui)

Java标签中gif的问题