2013-03-25 41 views
0

你好我想在运行时在面板上创建文本框,即当我给两个文本框中的输入3和4,然后它将打印在3行和4列上的按钮单击事件中的文本框。 这是我的代码。Java运行时文本框创建

JFrame jf=new JFrame(); 
JPanel jp=new JPanel(); 
JTextField jt1=new JTextField(); 
JTextField jt2=new JTextField(); 
JLabel jl1=new JLabel("Enter Row"); 
JLabel jl2=new JLabel("Enter Column"); 
JButton jb1=new JButton("OK"); 
JButton jb2=new JButton("Cancel"); 

jf.setContentPane(jp); 
jp.setLayout(null); 
jp.setBackground(Color.CYAN); 
jp.add(jb1); 
jp.add(jt1); 
jp.add(jt2); 
jp.add(jl1); 
jp.add(jl2); 
jp.add(jb2); 

jf.setVisible(true); 
jf.setSize(500,500); 

jt1.setBounds(200,20,50,30); 
jt2.setBounds(200,60,50,30); 

jl1.setBounds(90, 20, 80, 30); 
jl2.setBounds(90,60,80,30); 
jb1.setBounds(150, 100, 80, 80); 

jb1.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
} 
+0

要添加此功能 – Jabir 2013-03-25 10:29:23

+0

不管你做什么,以创建一个按钮,只是做内部的actionPerformed同样的事情,你期望的事件被触发后 – 2013-03-25 11:01:08

+0

@Ravindra Gullapalli看我想要做这样的请分享你的src 。我有两个文本框在第一我会把值3,在第二我会输入值4,我也有一个按钮,现在我的目标是当我点击按钮,所以3 * 4 = 12文本框将出现在面板上。文本框应以行和列格式显示。 – OmD 2013-03-25 11:28:26

回答

0

得到的值下面是一个粗略的代码,没有任何验证和布局的考虑。您可以使用它来进一步满足您的要求。

public class ClsCreateTextBoxes extends javax.swing.JFrame{ 
    private javax.swing.JPanel jpInputPanel = null; 
    private javax.swing.JTextField jtfRows = null; 
    private javax.swing.JTextField jtfColumns = null; 
    private javax.swing.JButton jbCreateMatrix = null; 
    private javax.swing.JPanel jpMatrixPanel = null; 

    public ClsCreateTextBoxes(){ 
     setSize(400, 400); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
     getContentPane().setLayout(new java.awt.BorderLayout()); 
     jpInputPanel = new javax.swing.JPanel(new java.awt.FlowLayout()); 
     jtfRows = new javax.swing.JTextField(10); 
     jpInputPanel.add(jtfRows); 
     jtfColumns = new javax.swing.JTextField(10); 
     jpInputPanel.add(jtfColumns); 
     jbCreateMatrix = new javax.swing.JButton("Create"); 
     jbCreateMatrix.addActionListener(new java.awt.event.ActionListener(){ 
      public void actionPerformed(java.awt.event.ActionEvent ae){ 
       // Assuming proper number is given 
       jpMatrixPanel.setLayout(new java.awt.GridLayout(Integer.parseInt(jtfRows.getText()), Integer.parseInt(jtfColumns.getText()))); 
       for(int rowIndex = 0; rowIndex < Integer.parseInt(jtfRows.getText()); rowIndex ++){ 
        for(int columnIndex = 0; columnIndex < Integer.parseInt(jtfColumns.getText()); columnIndex ++){ 
         jpMatrixPanel.add(new javax.swing.JTextField(10)); 
         pack(); 
        } 
       } 
      } 
     }); 
     jpInputPanel.add(jbCreateMatrix); 
     getContentPane().add(jpInputPanel, java.awt.BorderLayout.NORTH); 
     jpMatrixPanel = new javax.swing.JPanel(); 
     getContentPane().add(jpMatrixPanel, java.awt.BorderLayout.SOUTH); 
     pack(); 
    } 
    public static void main(String[] args){ 
     ClsCreateTextBoxes createdTextBoxes = new ClsCreateTextBoxes(); 
     createdTextBoxes.setVisible(true); 
    } 
} 
+0

我认为你是正确的。我试过了,也没有任何错误提升,但文本框没有显示。 – OmD 2013-03-28 09:23:09

0

可以在actionPerformed()方法使用循环基于从文本框