次のメソッドがあります。このメソッドは、編集可能なセルのデータベース管理テーブルのレコードをJTableにロードしています。編集したJTableセルのレコードをデータベースに更新する方法
private void renderAdminInfoTable() {
adminInfoTable = new JTable();
adminInfoTable.setPreferredScrollableViewportSize(new Dimension(400, 181));
adminInfoTable.setFillsViewportHeight(true);
adminInfoTable.setBackground(ARSColour.TRANSPARENTBLUE);
adminInfoTable.setGridColor(new Color(128, 128, 128, 50));
adminInfoTable.setRowHeight(32);
adminInfoTable.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
adminInfoTable.setShowVerticalLines(false);
DefaultTableModel model = new DefaultTableModel() {
@Override
public boolean isCellEditable(int row, int column) {
switch (row){
case 0://Name
return false;
case 1: //Email
if(column == 1)
return true;
else
return false;
case 2: //Phone
if(column == 1)
return true;
else
return false;
default:
return false;
}
}
};
adminInfoTable.setModel(model);
//Create the scroll pane and add the table to it.
scrollPaneInfo = new JScrollPane(adminInfoTable);
this.add(scrollPaneInfo);
scrollPaneInfo.setBounds(36+20, 768 - 628+10, 400-20*2, 181-10);
scrollPaneInfo.setBorder(BorderFactory.createEmptyBorder(0,0,0,0));
scrollPaneInfo.setBackground(ARSColour.TRANSPARENTBLUE);
JScrollBar sb = scrollPaneInfo.getVerticalScrollBar();
sb.setUI(new MyScrollbarUI());
// sets width of scrollbar
Dimension scrollBarDim = new Dimension(10, sb
.getPreferredSize().height);
sb.setPreferredSize(scrollBarDim);
}
別の方法では、addActionListenerを使用して[保存]ボタンを使用してdbQueries.updateAdmin()メソッドを呼び出します。
public void renderAdminInformationPanel() {
AdminInfoLabel = new JLabel("Edit Admin Information");
AdminInfoLabel.setFont(new Font("Open Sans", Font.PLAIN, 22));
AdminInfoLabel.setBounds(36, 768 - 662 - 6, AdminInfoLabel.getPreferredSize().width, AdminInfoLabel.getPreferredSize().height);
AdminInfoLabel.setForeground(ARSColour.BRIGHTBLUE);
AdminInfoLabel.setBackground(ARSColour.WHITE);
AdminInfoLabel.setOpaque(true);
this.add(AdminInfoLabel);
btnSave = new JButton("Save");
btnSave.setBounds(196, 998 - 662 - 6, btnSave.getPreferredSize().width, btnSave.getPreferredSize().height);
btnSave.setOpaque(true);
this.add(btnSave);
btnSave.addActionListener(new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
dbQueries.updateAdmin(); //HERE IS THE METHOD CALL WHERE I NEEDED TO PASS ALL EDITED COLUMNS IN ORDER TO SAVE INTO DATABASE.
}
});
renderAdminInfoTable();
tableBackground = new JPanel();
this.add(tableBackground);
tableBackground.setBounds(36, 768 - 628, 400, 181);
tableBackground.setBorder(BorderFactory.createEmptyBorder(0,0,0,0));
tableBackground.setBackground(ARSColour.TRANSPARENTBLUE);
adminInfoPanel = backgroundJPanel(24, 768-675, 424, 340);
}
私の質問は:どのように私は、データベースを更新するためにUPDATEADMIN()メソッドの中で編集したすべてのセルの値を渡すのでしょうか? - ありがとう
'scrollPaneInfo.setBounds(36 + 20,768 - 628 + 10,400-20 * 2,181-10);'うわー! 「魔法の数」について話す。それらはブードゥーです! Java GUIは、異なるロケールの異なるPLAFを使用して、異なるOS、画面サイズ、画面解像度などで動作する必要があります。したがって、ピクセルの完全なレイアウトには役立ちません。代わりに、レイアウトマネージャや[それらの組み合わせ](http://stackoverflow.com/a/5630271/418556)と[空白](http://stackoverflow.com/a/17874718/)のレイアウトパディングとボーダーを使用してください。 418556)。より一般的には:.. –
..もっと早く助けを求めるには、[MCVE]または[短く、自己完結型の正しい例](http://www.sscce.org/)を投稿してください。 –
'dbQueries.updateAdmin()'メソッドは何をしていますか?基本的には、パラメータを渡すことができる新しいメソッドを記述するだけです。パラメータはJTableセルから取得され、データベースに挿入されます。コードは使用しているデータベースによって異なります。 – Payam