1から360までの値を持つJSliderがあります。値ごとに、データベースから画像を取得してJLabelに配置します。したがって、データベースから対応する画像を取得するために使用される変数スイッチが唯一の違いである360のケースがあります(以下のコードを参照)。私の「ソリューション」ではコードが非常に重いため、コードを更新する必要があることはわかっています。
何をアーカイブしたいのか明確になったことを願っています。以下はコードです。
degreesSlider = new JSlider(); //my JSlider
degreesSlider.setMajorTickSpacing(10);
degreesSlider.setMaximum(360);
degreesSlider.setMinorTickSpacing(1);
degreesSlider.setOrientation(javax.swing.JSlider.VERTICAL);
degreesSlider.setPaintLabels(true);
degreesSlider.setPaintTicks(true);
degreesSlider.setSnapToTicks(true);
degreesSlider.setValue(0);
degreesSlider.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent evt) {
int x = degreesSlider.getValue(); //get JSlider value
int row = myJTable.getSelectedRow();
int realIndex = myJTable.convertRowIndexToModel(row);
String clickJTable = (myJTable.getModel().getValueAt(realIndex, 0).toString()); //detect my JTable row click
switch (x) {
case 1:
try {
PreparedStatement pst = conn.prepareStatement("select pol, cros from test where degrees = ? AND id_min=?");
pst.setInt(1, x); //x is the only variable of the all 360 cases
pst.setString(2, clickJTable);
ResultSet rs = pst.executeQuery();
if (rs.next()) {
byte[] imageP = rs.getBytes("pol");
byte[] imageC = rs.getBytes("cros");
pol = new ImageIcon(imagepolars);
cros = new ImageIcon(imagecrossed);
mineralsPolars.setIcon(pol); //put image into JLabel
mineralsCrossed.setIcon(cros); //put image into JLabel
}
rs.close();
pst.close();
} catch (Exception e) {
}
break;
//case 2, 3, 4 ... 360 with the same code and the difference between them is the variable x
}
}
});