如何使用数据库列中的结果集创建多个jLabel? 我花了差不多2天试图解决,但不幸的是我仍然没有把它弄清楚。请帮帮我。
这是我的代码:
String[] arr = null;
try{
String sql = "SELECT * FROM Position";
pst = conn.prepareStatement(sql);
rs = pst.executeQuery();
while(rs.next()){
String s1 = rs.getString("PositionName");
arr = s1.split("\n");
int v = 50;
for (int i = 0; i < arr.length; i++){
JLabel[] labels = new JLabel[i];
labels[i] = new JLabel();
labels[i].setBounds(50,v,80,20);
labels[i].setText(arr[i]);
jPanel3.add(labels[i]);
v+=40;
System.out.println(arr[i]);
}
jPanel3.repaint();
}
我想要一个像这样的结果,(在jLabel中)
President
Vice-President
Secretary
如果我使int i = 0,则输出为&#34; java.lang.ArrayIndexOutOfBoundsException:0&#34; 如果我把它变成int i = 1,那就没有错误但是根本没有创建jLabel。
答案 0 :(得分:0)
在for-loop之外初始化JLabel数组
JLabel[] labels = new JLabel[arr.length];
for (int i = 0; i < arr.length; i++){
labels[i] = new JLabel();
labels[i].setBounds(50,v,80,20);
labels[i].setText(arr[i]);
jPanel3.add(labels[i]);
v+=40;
}
答案 1 :(得分:0)
当i
== 0时,
JLabel [] labels = new JLabel [i];
创建一个无法保存任何内容的数组,因为它的大小为0.那么
labels[i] = new JLabel();
尝试将元素设置为索引0,从而导致异常。
代码试图做太多,这使得很难找到错误。尝试将代码分成单一责任方法,例如:
List<String> getAvailablePositions() {
// get the positions from the database
}
和
void addPositionLabels(List<String> availablePositions) {
// add the positions to the JPanel
}
答案 2 :(得分:0)
**这里是示例代码**
JFrame frame = new JFrame();
frame.setSize(300,300);
JPanel panel = new JPanel();
panel.setLayout(null);
int v = 50;
JLabel[] labels = new JLabel[3];
for (int i = 0; i < 3; i++){
labels[i] = new JLabel();
labels[i].setBounds(50,v,80,20);
labels[i].setText("hi");
panel.add(labels[i]);
v+=40;
}
frame.add(panel);
frame.setVisible(true);
**您将获得以下结果
hi
hi
hi**