그래서이 애플리케이션에는 JTable이있다. JTable은 JScrollPane의 내부에 있고 JScrollPane은 JFrame에 그려져 있습니다.내 JTable을 다시 칠하는 방법
이제 응용 프로그램에서 새 창을 열어 테이블에 새 행을 추가하고 단추를 클릭하여 변경 사항을 저장하면 새 창이 닫힙니다.
지금은 새로운 창을 닫은 후 다음 줄을 추가 시도 :
askTableInfo(); //a method to save the info in database to table and then save the table to variable 'table'
table.repaint();
scrollPane.repaint();
그리고 물론 재 페인트의
(); 그것으로 자기. 하지만 여전히 JFrame에서 내 테이블을 업데이트하지 않는 것 같습니다.여기에 어떤 문제가있을 수 있습니까? , AndmeKysija
는 생각을해야 당신이 AndmeKysija
의 결과에서 새 TableModel
을 만드는 일을해야
public class AppWindow extends JFrame implements ActionListener {
String user = "";
JLabel greetText = new JLabel();
JPanel panel = new JPanel();
JPanel panel2 = new JPanel(new GridLayout(1, 3));
JScrollPane scrollPane;
JTable tabel;
JButton newBook = new JButton("Add a book");
JButton deleteBook = new JButton("Remove a book");
JButton changeBook = new JButton("Change a book");
int ID;
public AppWindow(String user, int ID) {
this.ID = ID;
this.user = user;
setSize(500, 500);
setTitle("Books");
setLayout(new BorderLayout());
greetText.setText("Hi "+user+" here are your books:");
add(greetText, BorderLayout.NORTH);
askData();
panel.add(scrollPane);
add(panel, BorderLayout.CENTER);
panel2.add(newBook);
panel2.add(deleteBook);
panel2.add(changeBook);
add(paneel2, BorderLayout.SOUTH);
newBook.addActionListener(this);
setVisible(true);
}
private void askData() {
DataAsker asker = null;
try {
asker = new AndmeKysija(ID);
} catch (SQLException e) {
e.printStackTrace();
}
table = asker.giveTable();
scrollPane = new JScrollPane(tabel);
}
public static void main(String[] args){
AppWindow window = new AppWindow("Name", 2);
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == newBook){
new BookAdded(ID);
panel.revalidate();
panel.add(scrollPane);
panel.repaint();
repaint();
}
}
}
동일한 및/또는 동일한 것은 테이블 모델에 대한 간다 ... – MadProgrammer
글쎄, 내 'askTableInfo() '메소드에는'iscrollPane = new JScrollPane (table); '이있다.' 이것은 문제가 될 수 있습니까? 이 경우, 이미 작성한 Scrollpane을 새로운 정보로 업데이트하려면 어떻게해야합니까? – Veske
테이블 모델 업데이트 – MadProgrammer