2013-05-16 4 views
2

Java GUI에서 초보자입니다. 주어진 행렬의 역함수를 계산하는 프로그램을 작성 중입니다. 이렇게하려면 우선 매트릭스를 스캔해야합니다. 나는이 방법으로 매트릭스를 스캔하기로 결정루프에서 JTextField를 동적으로 작성하십시오.

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의 위치를 ​​어떻게 설정할 수 있습니까?

+1

을 원하는 것을 얻을 /sscce.org/). 이것은 실제로 JTable에 더 적합한 것처럼 들린다. –

+0

"this"란 무엇이며 어떤 레이아웃이 사용됩니까? –

+0

좋은 질문 .. –

답변

0

구체적 문제는 무엇입니까? 객체의 클래스 란 무엇입니까? 컨테이너 구성 요소의 레이아웃에 문제가있는 것 같습니다.

행렬 텍스트 필드를 JPanelGridLayout으로 추가하는 것이 좋습니다.

예 :/:

// ... 
    matrixPanel.setLayout(new GridLayout(rowCnt, rowCnt)); // matrixPanel is the dedicated JPanel 
    for(i=0;i<rowCnt;i++){ 
     for(j=0;j<rowCnt;j++){ 
       JTextField textField = new JTextField(); 
       matrixPanel.add(textField); // add the fields into the panel 
       //pack(); I think it wouldn't be needed 
     } 
    } 
GridPanel에 대한

더 자세한 정보

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


     } 
    } 

http://docs.oracle.com/javase/tutorial/uiswing/layout/grid.html에서 빨리,이 [SSCCE] (HTTP를 게시 이것을 시도하고 더 나은 도움이 필요하면

+1

@ 간달프 rowCnt 당신이 얻을 매개 변수입니다. 그에 따라 설정합니다. 나는 비슷한 코드를 발견하고 당신을 위해 그것을 편집했습니다. –

+0

당신은 최고입니다, 나는 이것을 시도 할 것입니다 – saidozcan

관련 문제