JButton btn; for (int i=0;i<lbl.length;i++) { btn=new JButton(lbl[i]); jpl.add(btn,i); }
时间: 2023-12-30 19:06:23 浏览: 102
这是一个在 Java Swing 中创建多个按钮的语句。该语句使用了一个 for 循环来遍历 lbl 数组中的所有元素,创建对应数量的按钮,并将这些按钮添加到一个 JPanel 中。
在循环中,首先创建了一个 JButton 对象 btn,并将 lbl 数组中的当前元素作为按钮的标签文本。然后将该按钮添加到 JPanel 对象 jpl 中,并指定该按钮在 JPanel 中的位置为 i。最后,循环结束后,jpl 中会包含多个按钮,这些按钮的标签文本分别为 lbl 数组中的元素。
相关问题
package text6; import java.sql.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class domo extends JFrame implements ActionListener{ Connection con; Statement cmd; ResultSet rs; String url="jdbc:mysql://127.0.0.1:3306/support"; String driver="com.mysql.jdbc.Driver"; JPanel jp1=new JPanel(); JPanel jp2=new JPanel(); JLabel lbl_no=new JLabel("学号"); JLabel lbl_name=new JLabel("姓名"); JLabel lbl_birth=new JLabel("生日"); JLabel lbl_sex=new JLabel("性别"); JLabel lbl_study=new JLabel("学情"); JLabel lbl_live=new JLabel("宿舍"); JTextField txt_no=new JTextField(20); JTextField txt_name=new JTextField(20); JTextField txt_birth=new JTextField(20); JTextField txt_sex=new JTextField(20); JTextField txt_study=new JTextField(20); JTextField txt_live=new JTextField(20); JButton btn_add=new JButton("新增"); JButton btn_delete=new JButton("删除"); JButton btn_update=new JButton("更新"); public domo(){ jp1.add(lbl_no); jp1.add(txt_no); jp1.add(lbl_name); jp1.add(txt_name); jp1.add(lbl_birth); jp1.add(txt_birth); jp1.add(lbl_sex); jp1.add(txt_sex); jp1.add(lbl_study); jp1.add(txt_study); jp1.add(lbl_live); jp1.add(txt_live); add(jp1,BorderLayout.CENTER); jp2.add(btn_add); jp2.add(btn_delete); jp2.add(btn_update); add(jp2,BorderLayout.SOUTH); btn_add.addActionListener(this); btn_delete.addActionListener(this); btn_update.addActionListener(this); setBounds(250,250,250,250); setVisible(true); setDefaultCloseOperation(DISPOSE_ON_CLOSE); } public void actionPerformed(ActionEvent e) { if(btn_add.isSelected()) { try { Class.forName(driver); con=DriverManager.getConnection(url,"root",""); cmd=con.createStatement(); String sql="select * from student where sno='" + txt_no.getText() + "'";//查看是否存在已有的uno rs=cmd.executeQuery(sql); if(rs.next()) if(rs.getString(1).equals(txt_no.getText())==false) JOptionPane.showMessageDialog(null, "成功","成功",JOptionPane.PLAIN_MESSAGE); con.close(); }catch(Exception e1) { System.out.print(e1); } } } public static void main(String args[]) { JFrame.setDefaultLookAndFeelDecorated(true); new domo(); } }改错
1. 按钮的判断应该使用 `if(e.getSource() == btn_add)`,而不是 `if(btn_add.isSelected())`。
2. 在查询语句中应该使用 `where sno='" + txt_no.getText() + "'"`,而不是 `where uno='" + txt_no.getText() + "'"`。
3. 在成功提示框中,应该显示“成功”,而不是“失败”。
4. 在异常处理中,应该使用 `e1.printStackTrace()`,而不是 `System.out.print(e1)`。
5. 在按钮的事件处理中,应该加入删除和更新按钮的处理代码。
import java.awt.event.*; import java.awt.*; import javax.swing.*; import javax.swing.table.DefaultTableModel; public class MyTableWin extends JFrame implements ActionListener { Object rows[][] = { { "001", "zhang", "03/04/2002", "Computer" }, { "002", "Li", "05/10/2002", "Chinese" }, { "003", "Wang", "09/10/2002", "English" } }; String cols[] = { "number", "name", "birthday", "department" }; JTable table; JLabel lbl_show; JTextField txt_show; JButton btn_update; JPanel pSouth, pNorth; JScrollPane jp; public MyTableWin() { table = new JTable(rows, cols); // 表格里点谁就显示谁 table.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { int row = table.getSelectedRow(); int column = table.getSelectedColumn(); Object selectedvalue = table.getModel().getValueAt(row, column); txt_show.setText((String) selectedvalue); btn_update.setEnabled(true); } }); lbl_show = new JLabel("Info."); txt_show = new JTextField(15); btn_update = new JButton("Update"); btn_update.setEnabled(false); btn_update.addActionListener(this); pSouth = new JPanel(); pNorth = new JPanel(); jp = new JScrollPane(table); pNorth.add(jp); pSouth.add(lbl_show); pSouth.add(txt_show); pSouth.add(btn_update); add(pNorth, BorderLayout.CENTER); add(pSouth, BorderLayout.SOUTH); setVisible(true); setSize(800, 500); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void actionPerformed(ActionEvent e) { int row = table.getSelectedRow(); int column = table.getSelectedColumn(); rows[row][column] = txt_show.getText(); int option = JOptionPane.showConfirmDialog(this, "do you confirm to update the table content?", "warning", JOptionPane.OK_CANCEL_OPTION); if (option == JOptionPane.OK_OPTION) { table.setModel(new DefaultTableModel(rows, cols)); } btn_update.setEnabled(false); } public static void main(String[] args) { MyTableWin win = new MyTableWin(); } }修改该程序,使得点击表格时,在控件台显示所在行一行的数据。
可以在鼠标点击事件中获取所在行的数据,然后显示在控件台上。修改代码如下:
```
table.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
int row = table.getSelectedRow();
Object[] rowData = new Object[cols.length];
for (int i = 0; i < cols.length; i++) {
rowData[i] = table.getModel().getValueAt(row, i);
}
String rowInfo = "Row " + (row + 1) + ": " + Arrays.toString(rowData);
txt_show.setText(rowInfo);
btn_update.setEnabled(true);
}
});
```
这样修改后,点击表格时就可以在控件台中显示所在行一行的数据了。
阅读全文