>source

우리는 엑셀과 비슷한 프로그램을 만들어야합니다. 이제 999 열과 999 행의 필드를 만들고 싶다는 문제가 있습니다. 나는 이미 999 * 999 JTextField 에서 시도했습니다.  제어하지만 분명히 매우 오래 필요하며 메모리가 남아 있지 않다는 예외가 발생합니다. 어떻게하면 나아질 수 있습니까? 사용중인 텍스트 입력란 만 렌더링하거나 표를 만드는 더 좋은 방법이 있습니까?

내 코드는 다음과 같습니다 :

tablePanel = new JPanel();
tablePanel.setLayout(new GridBagLayout());
tablePanel.setSize(100, 30);
tablePanel.setBorder(null);
JScrollPane tableScroll = new JScrollPane(tablePanel, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
//tableScroll.getVerticalScrollBar().setPreferredSize(new Dimension(0,0));
//tableScroll.getVerticalScrollBar().setUnitIncrement(25);
tableScroll.setBounds(0, 30, 30, this.getHeight());
table = new ArrayList<>();
for (int i = 0; i < 999; i++) {
    ArrayList<Component> column = new ArrayList<>();
    for (int j = 0; j < 999; j++) {
        JTextField field = new JTextField();
        field.setPreferredSize(new Dimension(100, 30));
        field.setBorder(null);
        field.setFocusCycleRoot(false);
        field.setFocusable(false);
        gbc.gridy = j;
        gbc.gridx = i;
        column.add(field);
        tablePanel.add(field, gbc);
    }
    table.add(column);
}

  • 답변 # 1

    javax.swing.JTable 를 만들 수 있습니다  이렇게 :

    JTable table = new JTable(999,999); // creates a 999*999 table
    TableCellEditor tce = table.getCellEditor();
    // use tce to follow user
    
    

    tce 사용  사용자가 어떤 셀로 무엇을하고 있는지 따라갑니다.

    javax.swing.JTable 에 대한보다 심층적 인 튜토리얼 , 표 사용 방법 참조

관련 자료

  • 이전 .net - TransactionScope는 C # MVC에서 DTC를 활성화해야합니다
  • 다음 apache spark - pyspark - 유효하지 않은 값이 제공된 stopwordsremover 매개 변수 로케일