2
내 질문에 동적, JTable에서 행과 열의 수를 설정하는 방법입니까? 사용자가 2 행 2 열의 표를 만들고 싶다면 번호를 입력하면됩니다. 어떻게 할 수 있습니까, 나는 성공없이 DefaultModel로 시도했습니다.JTable 동적 행 및 열을 설정하는 방법
어떤 도움을 주셔서 감사합니다.
감사
내 질문에 동적, JTable에서 행과 열의 수를 설정하는 방법입니까? 사용자가 2 행 2 열의 표를 만들고 싶다면 번호를 입력하면됩니다. 어떻게 할 수 있습니까, 나는 성공없이 DefaultModel로 시도했습니다.JTable 동적 행 및 열을 설정하는 방법
어떤 도움을 주셔서 감사합니다.
감사
DefaultTableModel
는 런타임에 행/열 수를 정의 할 수있는 두 가지 방법이있다. 당신은 할 수
DefaultTableModel
만들 ...
DefaultTableModel model = new DefaultTableModel(rows, cols);
다음은
JTable
이 적용됩니다. 이것은 명백하게 기존 테이블 모델을 대체합니다. 즉, 모든 데이터를 잃게됩니다.
마스터 DefaultTableModel
를 만들고 JTable
에 적용 단순히 필요에 따라
model.setRowCount(rows);
model.setColumnCount(cols);
동적으로 행과 열의 수를 업데이트하는 데 사용할. 이것은 당신이 테이블 모델 내의 데이터를 보존 할 수 있습니다 ...
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSpinner;
import javax.swing.JTable;
import javax.swing.SpinnerNumberModel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.table.DefaultTableModel;
public class Test {
public static void main(String[] args) {
new Test();
}
public Test() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
}
JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new TestPane());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
public class TestPane extends JPanel {
private JTable table;
private DefaultTableModel model;
private JSpinner fldRows;
private JSpinner fldColumns;
public TestPane() {
setLayout(new BorderLayout());
fldRows = new JSpinner(new SpinnerNumberModel(1, 1, 999999, 1));
fldColumns = new JSpinner(new SpinnerNumberModel(1, 1, 999999, 1));
JPanel options = new JPanel(new GridBagLayout());
options.add(new JLabel("Rows: "));
options.add(fldRows);
options.add(new JLabel("Columns: "));
options.add(fldColumns);
JButton update = new JButton("Update");
options.add(update);
update.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int rows = (int) fldRows.getValue();
int cols = (int) fldColumns.getValue();
// Dynamic master model...
// model.setRowCount(rows);
// model.setColumnCount(cols);
// Replace model
table.setModel(new DefaultTableModel(rows, cols));
}
});
model = new DefaultTableModel();
table = new JTable();
add(new JScrollPane(table));
add(options, BorderLayout.NORTH);
}
}
}
당신은 '들쭉날쭉'테이블을 의미합니까? 사용자가 3 열이있는 행 하나와 4 열이있는 다른 행을 허용 할 수 있습니까? 아니면 테이블에 행을 추가하는 데 문제가 있습니까? – Radiodef
시도한 코드를 게시하십시오. – alterfox
'TableModel'은 솔루션입니다 ... – MadProgrammer