swing中JTable的下拉列表获取值问题

我在JTable中嵌套了一个下拉列表,当我选择下拉列表中的选项时,却获取不到我选中的那个值,
比如,我选择了“血浆”,却获取不到这个值,而是返回null,但是这个JcomboBox对象能获取到,很奇怪,这是为什么呢

1个回答

图片说明

图片说明

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Swing中JTable的TableCellRenderer问题
小弟近期正在用Swing做一个小工具。遇到一个恼人的问题! 应用场景是这样的.如图所示: [img]http://dl.iteye.com/upload/attachment/166734/39bcacf0-3531-3303-a84a-745d8e3a0831.jpg[/img] 在表格内显示任务,每条任务对应表格内的一行。 重写了TableCellRenderer,表格的最后两列为进度条和按钮。 通过选中的rowIndex和columnIndex来确定用户点击了按钮所在的单元格。 如果鼠标点选到了"按钮单元格"则 禁用该按钮。 代码如下: [code="java"] private void tbl_taskMouseClicked(java.awt.event.MouseEvent evt) { JTable table= (JTable) evt.getSource(); int colIndex=table.getSelectedColumn(); int rowIndex=table.getSelectedRow(); if(colIndex==4){//如果鼠标点击的单元格为“按钮单元格” System.out.println("按钮坐标:"+rowIndex+"-"+colIndex); //获取该单元格的CellRenderer 并 cast to MyTableRenderer // (MyTableRenderer 是一个继承了JButton实现了TableCellRenderer接口的renderer) MyTableRenderer mtb=(MyTableRenderer) table.getCellRenderer(rowIndex, colIndex); mtb.setEnable(false); } } [/code] 以上代码成功通过编译,但问题也随之出现了。 点击第1行的“按钮单元格”,此时该按钮单元格不变灰。此时再点击第2行的“按钮单元格”之后,第一行和第二行的单元格被一起 置灰了..情形如同window内按住"shift"在选择文件的时候出现部分全选的情况。 但我想达到的目的是点选了哪个“按钮单元格”,就让该“按钮单元格”禁用。 [code="java"] //难道这样定位到的不是唯一一个Cell?还是说跟jtable的select机制发生了冲突? MyTableRenderer mtb=(MyTableRenderer) table.getCellRenderer(rowIndex, colIndex); mtb.setEnable(false); [/code] 同样 ,在设置progressbar的时候也出现这样的问题。。切换界面的时候又发现所有按钮单元格全部置灰。 求教! [b]问题补充:[/b] fangfumin 提供的问题解答没法完成。 JButton obj =(JButton)jTable.getValueAt(row, col); 这个无法强制转换成JButton,getValueAt()方法是取得坐标上的值。
java swing的JTable中的某一列加入下拉复选框,选择的多个数据显示在单元格
java swing的JTable中的某一列加入下拉复选框, 点击单元格,出现下拉框,选择的多个数据显示在单元格? 效果图如下所示: ![图片说明](https://img-ask.csdn.net/upload/201901/25/1548384695_331151.png)
swing jtable 更新的问题
界面里面写了个删除按钮,用来删除数据库的数据,但是删除后如何将实时的数据更新到jtable里面呢?
Swing中JTable的问题
如图 表格未显示数组tt中的数据为什么呢?但是如果面板容器用JScrollPane就可以全部显示。 小白求解
java swing中的JTable问题
![图片说明](https://img-ask.csdn.net/upload/201412/25/1419512575_642384.png) 我的问题是这样的: 我想在这个界面中同时实现增删改查的功能,现在还差改的功能。 我想在JTable中双击某个单元格,修改某个值后以实现改的功能, 现在我没法把修改后的某条通讯录信息重新写入文件,写入文件的方法是用object流, 我想问这该怎么实现 先谢谢各位大神了!!
求助,swing,JTable有一列渲染成按钮,自定义图标,点击之后切换图标,一个按钮控制一行
一个上传下载swing客户端,JTable里面有一列渲染了JButton,自定义图标,用来点击控制开始暂停,没点之前按钮图标是开始,点击开始之后按钮图标变成暂停。现在问题是,我点击开始之后,图标变成暂停。再点第二行的开始,第二行图标变成暂停,但是之前那行暂停的图标却变成了开始,状态是没变,只是图标变了,为什么会影响其他行啊,怎么点击一行只影响一行啊?
java swing jtable
小弟不才,才学swing [code="java"] /* * MySwingView.java */ package myswing; import org.jdesktop.application.Action; import org.jdesktop.application.ResourceMap; import org.jdesktop.application.SingleFrameApplication; import org.jdesktop.application.FrameView; import org.jdesktop.application.TaskMonitor; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.Timer; import javax.swing.Icon; import javax.swing.JDialog; import javax.swing.JFrame; /** * The application's main frame. */ public class MySwingView extends FrameView { public MySwingView(SingleFrameApplication app) { super(app); initComponents(); // status bar initialization - message timeout, idle icon and busy animation, etc ResourceMap resourceMap = getResourceMap(); int messageTimeout = resourceMap.getInteger("StatusBar.messageTimeout"); messageTimer = new Timer(messageTimeout, new ActionListener() { public void actionPerformed(ActionEvent e) { statusMessageLabel.setText(""); } }); messageTimer.setRepeats(false); int busyAnimationRate = resourceMap.getInteger("StatusBar.busyAnimationRate"); for (int i = 0; i < busyIcons.length; i++) { busyIcons[i] = resourceMap.getIcon("StatusBar.busyIcons[" + i + "]"); } busyIconTimer = new Timer(busyAnimationRate, new ActionListener() { public void actionPerformed(ActionEvent e) { busyIconIndex = (busyIconIndex + 1) % busyIcons.length; statusAnimationLabel.setIcon(busyIcons[busyIconIndex]); } }); idleIcon = resourceMap.getIcon("StatusBar.idleIcon"); statusAnimationLabel.setIcon(idleIcon); progressBar.setVisible(false); // connecting action tasks to status bar via TaskMonitor TaskMonitor taskMonitor = new TaskMonitor(getApplication().getContext()); taskMonitor.addPropertyChangeListener(new java.beans.PropertyChangeListener() { public void propertyChange(java.beans.PropertyChangeEvent evt) { String propertyName = evt.getPropertyName(); if ("started".equals(propertyName)) { if (!busyIconTimer.isRunning()) { statusAnimationLabel.setIcon(busyIcons[0]); busyIconIndex = 0; busyIconTimer.start(); } progressBar.setVisible(true); progressBar.setIndeterminate(true); } else if ("done".equals(propertyName)) { busyIconTimer.stop(); statusAnimationLabel.setIcon(idleIcon); progressBar.setVisible(false); progressBar.setValue(0); } else if ("message".equals(propertyName)) { String text = (String)(evt.getNewValue()); statusMessageLabel.setText((text == null) ? "" : text); messageTimer.restart(); } else if ("progress".equals(propertyName)) { int value = (Integer)(evt.getNewValue()); progressBar.setVisible(true); progressBar.setIndeterminate(false); progressBar.setValue(value); } } }); } @Action public void showAboutBox() { if (aboutBox == null) { JFrame mainFrame = MySwingApp.getApplication().getMainFrame(); aboutBox = new MySwingAboutBox(mainFrame); aboutBox.setLocationRelativeTo(mainFrame); } MySwingApp.getApplication().show(aboutBox); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { mainPanel = new javax.swing.JPanel(); jScrollPane1 = new javax.swing.JScrollPane(); jTable1 = new javax.swing.JTable(); menuBar = new javax.swing.JMenuBar(); javax.swing.JMenu fileMenu = new javax.swing.JMenu(); javax.swing.JMenuItem exitMenuItem = new javax.swing.JMenuItem(); jMenuItem1 = new javax.swing.JMenuItem(); javax.swing.JMenu helpMenu = new javax.swing.JMenu(); javax.swing.JMenuItem aboutMenuItem = new javax.swing.JMenuItem(); statusPanel = new javax.swing.JPanel(); javax.swing.JSeparator statusPanelSeparator = new javax.swing.JSeparator(); statusMessageLabel = new javax.swing.JLabel(); statusAnimationLabel = new javax.swing.JLabel(); progressBar = new javax.swing.JProgressBar(); mainPanel.setName("mainPanel"); // NOI18N jScrollPane1.setName("jScrollPane1"); // NOI18N jTable1.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {null, null, null, null}, {null, null, null, null}, {null, null, null, null}, {null, null, null, null} }, new String [] { "Title 1", "Title 2", "Title 3", "Title 4" } ) { boolean[] canEdit = new boolean [] { false, false, false, true }; public boolean isCellEditable(int rowIndex, int columnIndex) { return canEdit [columnIndex]; } }); jTable1.setName("jTable1"); // NOI18N jScrollPane1.setViewportView(jTable1); javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel); mainPanel.setLayout(mainPanelLayout); mainPanelLayout.setHorizontalGroup( mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(mainPanelLayout.createSequentialGroup() .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 555, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); mainPanelLayout.setVerticalGroup( mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(mainPanelLayout.createSequentialGroup() .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 314, Short.MAX_VALUE) .addContainerGap()) ); menuBar.setName("menuBar"); // NOI18N org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(myswing.MySwingApp.class).getContext().getResourceMap(MySwingView.class); fileMenu.setText(resourceMap.getString("fileMenu.text")); // NOI18N fileMenu.setName("fileMenu"); // NOI18N javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance(myswing.MySwingApp.class).getContext().getActionMap(MySwingView.class, this); exitMenuItem.setAction(actionMap.get("quit")); // NOI18N exitMenuItem.setName("exitMenuItem"); // NOI18N fileMenu.add(exitMenuItem); jMenuItem1.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_Q, java.awt.event.InputEvent.CTRL_MASK)); jMenuItem1.setText("Item"); jMenuItem1.setName("jMenuItem1"); // NOI18N jMenuItem1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { thisClick(evt); } }); fileMenu.add(jMenuItem1); menuBar.add(fileMenu); helpMenu.setText(resourceMap.getString("helpMenu.text")); // NOI18N helpMenu.setName("helpMenu"); // NOI18N aboutMenuItem.setAction(actionMap.get("showAboutBox")); // NOI18N aboutMenuItem.setName("aboutMenuItem"); // NOI18N helpMenu.add(aboutMenuItem); menuBar.add(helpMenu); statusPanel.setName("statusPanel"); // NOI18N statusPanelSeparator.setName("statusPanelSeparator"); // NOI18N statusMessageLabel.setName("statusMessageLabel"); // NOI18N statusAnimationLabel.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); statusAnimationLabel.setName("statusAnimationLabel"); // NOI18N progressBar.setName("progressBar"); // NOI18N javax.swing.GroupLayout statusPanelLayout = new javax.swing.GroupLayout(statusPanel); statusPanel.setLayout(statusPanelLayout); statusPanelLayout.setHorizontalGroup( statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(statusPanelSeparator, javax.swing.GroupLayout.DEFAULT_SIZE, 565, Short.MAX_VALUE) .addGroup(statusPanelLayout.createSequentialGroup() .addContainerGap() .addComponent(statusMessageLabel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 395, Short.MAX_VALUE) .addComponent(progressBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(statusAnimationLabel) .addContainerGap()) ); statusPanelLayout.setVerticalGroup( statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(statusPanelLayout.createSequentialGroup() .addComponent(statusPanelSeparator, javax.swing.GroupLayout.PREFERRED_SIZE, 2, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(statusMessageLabel) .addComponent(statusAnimationLabel) .addComponent(progressBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(3, 3, 3)) ); setComponent(mainPanel); setMenuBar(menuBar); setStatusBar(statusPanel); }// </editor-fold> private void thisClick(java.awt.event.ActionEvent evt) { System.out.println("----------------------------->");//菜单栏事件 } // Variables declaration - do not modify private javax.swing.JMenuItem jMenuItem1; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTable jTable1; private javax.swing.JPanel mainPanel; private javax.swing.JMenuBar menuBar; private javax.swing.JProgressBar progressBar; private javax.swing.JLabel statusAnimationLabel; private javax.swing.JLabel statusMessageLabel; private javax.swing.JPanel statusPanel; // End of variables declaration private final Timer messageTimer; private final Timer busyIconTimer; private final Icon idleIcon; private final Icon[] busyIcons = new Icon[15]; private int busyIconIndex = 0; private JDialog aboutBox; } [/code] 如果我想在表格最后一列加个按钮,点击随便触发一个事件,应该如何写?表格的数据用动态生成。
swing jtable
给一个按钮添加监听器,单击后就会选中jtable的最后一行,我通过下面的代码实现了 [code="java"] llast.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ if(e.getActionCommand().equals("last")){ int index = table.getRowCount(); table.getSelectionModel().setSelectionInterval(index-1,index-1); } } });[/code] 由于jtable是放在一个JScrollPane中选择中,点击按钮后只有向下拉动滚动条才能看到选中的记录,问一下能不能选中后焦点直接跳到选中行。
javax.swing.JTable标题问题,始终不显示,不知道什么原因。。
import java.awt.Color; import java.awt.Dimension; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; public class TableRightTest extends JFrame{ // private JPanel jp; public TableRightTest(){ this.setSize(800, 500); this.setLocation(250, 150); this.setLayout(null); this.setResizable(false); this.setVisible(true); this.initTable(); } private JTable tbl_query; private DefaultTableModel defaultTblModel; private int tableColumn=9; private void initTable() { String[] columnNames= new String[tableColumn]; Object[][] data={}; DefaultTableModel dmodel = new DefaultTableModel(data,columnNames); defaultTblModel = dmodel; tbl_query = new JTable(dmodel); tbl_query.setPreferredScrollableViewportSize(new Dimension(30, 30)); tbl_query.setBounds(1, 1, 699, 160); JScrollPane jsp = new JScrollPane(); jsp.setLayout(null); jsp.setBounds(50, 150, 700, 200); jsp.setVisible(true); jsp.setBackground(new Color(120,145,152)); jsp.add(tbl_query); this.add(jsp); initTableData(); } private void initTableData() { // TODO Auto-generated method stub for(int j=0;j<3;j++){ String[] arr = new String[tableColumn]; for(int i=0;i<tableColumn;i++){ arr[i]= "A"+i; } defaultTblModel.addRow(arr); } } public static void main(String[] args) { new TableRightTest(); } }
java swing 隐藏jtable
单击隐藏按钮键隐藏整个表格组件 再次单击显示表格组件有什么函数么![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/3.gif)
Java swing开发 jtable使用
![![图片说明](https://img-ask.csdn.net/upload/201805/01/1525149695_494022.png)图片说明](https://img-ask.csdn.net/upload/201805/01/1525149689_425586.png) 图一是我想达到的状态,数据表的值已经被我取出来放进一个数组,现在我如何根据它的值显示两种状态,还有就是如果点击传值譬如说18号单元格根据id为18,19的属性值不同他俩就显示不同,点击18单元格能传值给底下textfield 我想插一个个jlabel到单元格然后让jlabel显示两种图片,但如何动态的把一个个label插入单元格呀
Swing JTable单元格ToolTipText如何根据单元格内容是否隐藏来显示?
通过重载jtable中的gettooltiptext()方法来完成鼠标悬浮提示的功能。这个已经做好。 jtable可以自由拖动列分割符,或者有些单元格内容过长,不完全显示内容,带省略号,如何检测到这个??? 我只需要针对内容未完成显示的单元格进行提示!
swing jtable 单元格编辑
JTable中单元格编辑的默认行为是在原有值的后面插入,请问如何设置可以使单元格在接收到键盘事件前首先清空其历史值,即用户输入的值即为单元格的新值。谢谢!
Java swing选项卡中有表格,表格中有按钮,按钮按不到
![成果图](https://oscimg.oschina.net/oscnet/up-f1f985da2b44ac32a58a6e778c7c15e22a1.JPEG) ``` package com.java.gui; import javax.swing.*; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumn; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; import java.awt.image.ImageConsumer; import java.net.URL; public class JTabbedPaneDemo extends JPanel { private JTabbedPane jTabbedPane = new JTabbedPane(); private String[] tabNames = {"选项卡1", "选项卡2", "表格"}; private ImageIcon icon = createImageIcon("middle.png"); public JTabbedPaneDemo() { layoutComponents(); } private void layoutComponents() { int i = 0; JPanel jpanelFirst = new JPanel(); jTabbedPane.addTab(tabNames[i++], icon, jpanelFirst, "fitst"); jTabbedPane.setMnemonicAt(0, KeyEvent.VK_0); JLabel jLabel1 = new JLabel("选项卡1:"); jpanelFirst.add(jLabel1); JTextField jTextField1 = new JTextField(20); jTextField1.setText("测试选项卡1"); jpanelFirst.add(jTextField1); JButton jButton1 = new JButton("提交"); jButton1.addActionListener((ActionEvent e) -> { JFrame jFrame = new JFrame(); JLabel jLabel = new JLabel(); jLabel.setIcon(icon); jFrame.add(jLabel); JOptionPane.showMessageDialog(jFrame, "提交成功!!!", "选项卡1提交", JOptionPane.INFORMATION_MESSAGE); }); jpanelFirst.add(jButton1); JPanel jpanelSecond = new JPanel(); // 加入第2个页面 jTabbedPane.addTab(tabNames[i++], icon, jpanelSecond, "second"); // 设置快捷键为1 jTabbedPane.setMnemonicAt(1, KeyEvent.VK_1); JLabel jLabel2 = new JLabel("选项卡2:"); jpanelSecond.add(jLabel2); JTextField jTextField2 = new JTextField(20); jTextField2.setText("测试选项卡2"); jpanelSecond.add(jTextField2); JButton jButton2 = new JButton("提交"); jButton2.addActionListener((ActionEvent e) -> { JOptionPane.showMessageDialog(null, "提交成功!!!", "选项卡2提交", JOptionPane.INFORMATION_MESSAGE); }); jpanelSecond.add(jButton2); JPanel jpanel3 = new JPanel(); jTabbedPane.addTab(tabNames[i++], icon, jpanel3, "第三个"); jTabbedPane.setMnemonicAt(2, KeyEvent.VK_2); String[] columsNames = {"序号", "姓名", "语文", "数学", "英语", "总分", "操作"}; Object[][] rowData = { {1, "张三", 80, 80, 80, 240, null}, {2, "John", 70, 80, 90, 240, null}, {3, "Sue", 70, 70, 70, 210, null}, {4, "Jane", 80, 70, 60, 210, null}, {5, "Joe_05", 80, 70, 60, 210, null}, {6, "Joe_06", 80, 70, 60, 210, null}, {7, "Joe_07", 80, 70, 60, 210, null}, {8, "Joe_08", 80, 70, 60, 210, null}, {9, "Joe_09", 80, 70, 60, 210, null}, {10, "Joe_10", 80, 70, 60, 210, null}, {11, "Joe_11", 80, 70, 60, 210, null}, {12, "Joe_12", 80, 70, 60, 210, null}, {13, "Joe_13", 80, 70, 60, 210, null}, {14, "Joe_14", 80, 70, 60, 210, null}, {15, "Joe_15", 80, 70, 60, 210, null}, {16, "Joe_16", 80, 70, 60, 210, null}, {17, "Joe_17", 80, 70, 60, 210, null}, {18, "Joe_18", 80, 70, 60, 210, null}, {19, "Joe_19", 80, 70, 60, 210, null}, {20, "Joe_20", 80, 70, 60, 210, null} }; JTable table = new JTable(rowData, columsNames); // 设置表格内容颜色 table.setForeground(Color.BLACK); // 字体颜色 table.setFont(new Font(null, Font.PLAIN, 14)); // 字体样式 table.setSelectionForeground(Color.DARK_GRAY); // 选中后字体颜色 table.setSelectionBackground(Color.LIGHT_GRAY); // 选中后字体背景 table.setGridColor(Color.GRAY); // 设置行高 table.setRowHeight(30); // 第一列列宽设置为40 table.getColumnModel().getColumn(0).setPreferredWidth(40); // 设置滚动面板视口大小(超过该大小的行数据,需要拖动滚动条才能看到) table.setPreferredScrollableViewportSize(new Dimension(800, 300)); table.getColumnModel().getColumn(6).setCellRenderer(new MyButtonRender()); DefaultTableModel defaultTableModel = new DefaultTableModel(); defaultTableModel.addRow(new Object[]{3, "Sue", 70, 70, 70, 210, null}); JScrollPane jsp = new JScrollPane(table); jpanel3.add(jsp); setLayout(new GridLayout(1, 1)); add(jTabbedPane); } private ImageIcon createImageIcon(String path) { URL url = JTabbedPaneDemo.class.getResource(path); if (url == null) { System.out.println("the image " + path + " is not exist!"); return null; } return new ImageIcon(url); // return new ImageIcon("/Users/mt-mac/IdeaProjects/JavaGUI/src/main/java/com/java/gui/middle.png"); } public static void main(String[] args) { SwingUtilities.invokeLater(() -> { JFrame jFrame = new JFrame(); jFrame.setLayout(null); jFrame.setVisible(true); jFrame.setContentPane(new JTabbedPaneDemo()); jFrame.setSize(800, 800); }); } public class MyButtonRender implements TableCellRenderer { private JPanel jPanel; private JButton jButton; public MyButtonRender() { initButton(); initPanel(); jPanel.add(jButton); } private void initPanel() { jPanel = new JPanel(); jPanel.setLayout(null); } private void initButton() { jButton = new JButton(); jButton.setBounds(2, 3, 80, 30); jButton.addActionListener((ActionEvent e) -> { System.out.println("" + e.getActionCommand()); System.out.println(jButton.getText()); }); } @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { jButton.setText("编辑"); return jPanel; } } } ```
myeclipse的jtable为何获取不到数据库的内容
package main; import java.sql.ResultSet; import java.sql.Statement; import java.sql.Connection; import java.sql.DriverManager; import java.util.Vector; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; public class DisplayPerson extends javax.swing.JFrame { /** Creates new form display */ public DisplayPerson() { createTableModel(); } private void createTableModel() { JTable JTableView = new JTable(); jScrollPane1 = new javax.swing.JScrollPane(); DefaultTableModel JTableModel = new DefaultTableModel(200,2); JTableModel.addColumn("PersonId"); JTableModel.addColumn("age"); JTableView.setModel(JTableModel); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); JTableView.setModel(new javax.swing.table.DefaultTableModel( new Object[][] { }, new String[] { "PersonId", "age"})); jScrollPane1.setViewportView(JTableView); javax.swing.GroupLayout layout = new javax.swing.GroupLayout( getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup(layout.createParallelGroup( javax.swing.GroupLayout.Alignment.LEADING).addGroup( layout.createSequentialGroup() .addContainerGap() .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 375, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(13, Short.MAX_VALUE))); layout.setVerticalGroup(layout.createParallelGroup( javax.swing.GroupLayout.Alignment.LEADING).addGroup( layout.createSequentialGroup() .addContainerGap() .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 275, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))); pack(); String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; //加载JDBC驱动 String dbURL = "jdbc:sqlserver://127.0.0.1:1433; DatabaseName=student"; String userName = "root"; String userPwd = "123"; Connection dbConn; try { Class.forName(driverName); dbConn = DriverManager.getConnection(dbURL, userName, userPwd); System.out.println("Connection Successful!"); Statement st = dbConn.createStatement(); ResultSet rs = st.executeQuery("select * from Person"); while (rs.next()) { Vector<Integer> vcRows = new Vector<Integer>(); vcRows.addElement(rs.getInt(1)); vcRows.addElement(rs.getInt(2)); // JTableModel.addRow(rs.getInt(1)); //error // JTableModel.addRow(rs.getString(2)); //error JTableModel.addRow(vcRows); //添加一行记录到表格模板中 } //5.关闭连接 rs.close(); st.close(); dbConn.close(); // DBConnection.closeStmtAndCon(); //关闭相关连接 } catch (Exception e) { e.printStackTrace(); } } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new DisplayPerson().setVisible(true); } }); } //GEN-BEGIN:variables // Variables declaration - do not modify private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTable JTableView; // End of variables declaration//GEN-END:variables }
在swing的Jtable初始化中已经添加过数据,查询一条或者多条数据,Jtbale里数据不更新
import java.awt.*; import javax.swing.*; import javax.swing.table.DefaultTableModel; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.util.Vector; import java.awt.event.ActionEvent; //创建主窗口 public class mainFace { private JFrame mainframe; private JTextField chepaiField; private Vector cars; private SelectCar sc=new SelectCar() ; private JTable ResultTable; private JScrollPane scrollPaneForRusultTable ; private DefaultTableModel tableModel; private Vector<String> columnNames=new Vector<>(); public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { mainFace window = new mainFace(); window.mainframe.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the application. */ public mainFace() { initialize(); } /** * Initialize the contents of the frame. */ private void initialize() { mainframe = new JFrame(); mainframe.setTitle("阜建路段客车升降档查询系统"); mainframe.getContentPane().setLayout(null); JLabel chepauLable = new JLabel("请输入车牌"); chepauLable.setBounds(54, 32, 80, 15); mainframe.getContentPane().add(chepauLable); chepaiField = new JTextField(); chepaiField.setBounds(144, 29, 99, 21); mainframe.getContentPane().add(chepaiField); chepaiField.setColumns(10); //查询按钮 JButton selectButton = new JButton("查询"); selectButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if(chepaiField.getText().length()<1) { /*chepaiField(车牌)输入长度小于1,表示未输入车牌,弹出对话框*/ JOptionPane.showMessageDialog(null, "查询所有车辆","未输入车牌",JOptionPane.ERROR_MESSAGE); //长度小于1,查询所有车牌 cars=null; cars=sc.selectAll(); } else { //长度不小于1,执行查询指定车牌的车 cars=null; cars=sc.selectCar(chepaiField.getText()); } ResultTable=null; ResultTable = new JTable(cars,columnNames); scrollPaneForRusultTable.setViewportView(ResultTable); } }); selectButton.setBounds(285, 28, 93, 23); mainframe.getContentPane().add(selectButton); System.out.println("1"); Vector<String> columnNames=new Vector<>(); columnNames.addElement("序号"); columnNames.addElement("车牌"); columnNames.addElement("车类型"); columnNames.addElement("座位数"); columnNames.addElement("查询方式"); columnNames.addElement("备注"); columnNames.addElement("添加人"); columnNames.addElement("图片"); //={"序号","车牌","车型","座位数","查询方式","录入人","录入时间","备注"};//列名字 Vector tableValue=sc.selectAll(); ResultTable = new JTable(tableValue,columnNames); //创建显示表格滚动的面板 scrollPaneForRusultTable = new JScrollPane(); scrollPaneForRusultTable.setBounds(60, 90, 800, 800); mainframe.getContentPane().add(scrollPaneForRusultTable); scrollPaneForRusultTable.setViewportView(ResultTable); //单机ResultTable窗体弹出对话框 ResultTable.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION); ResultTable.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { JOptionPane.showMessageDialog(null, ResultTable.getValueAt(ResultTable.getSelectedRow(),1),"错误提示",JOptionPane.ERROR_MESSAGE); /*if(e.getClickCount()==2) { System.out.println(x); }*/ } }); //结果显示的表窗体 /* String[] columnNames={"序号","车牌","车型","座位数","查询方式","录入人","录入时间","备注"}; tableModel.addColumn(columnNames); cars=sc.selectAll(); tableModel.addRow(cars);*/ mainframe.setBounds(100, 100, 1000, 1000); mainframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } ``` ```
Java swing 里 Jtable表格里一列怎么变高啊
我需要显示图片,但是找了半天只找到修改宽度 ,我想让它变高一些
swing如何刷新界面数据
我想的是index不会变,就可以跟原来的界面一样使用,但是为什么会多了 ``` package recite; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.IOException; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTable; import java.util.List; public class fmabtn { public static List<String>list_Array; public static JFrame jframe=new JFrame("日语学习"); public static JPanel Win=new JPanel(); public static JLabel headlabel=new JLabel(); public static JLabel label=new JLabel(); public static JLabel firstlabel=new JLabel("日本语学习软件"); public static String sum1="",sum2="",sum3=""; protected static int index; protected static int n=0; public static setBtnColor begin=new setBtnColor("开始",0); public static setBtnColor last=new setBtnColor("上一个单词",1); public static setBtnColor next=new setBtnColor("下一个单词",1); public static setBtnColor restart=new setBtnColor(); private static String []field= {"日汉","日语","形态","中文"}; public static void main(String []args)throws IOException { Icon ret=new ImageIcon("loop.jpg"); ImageIcon java=new ImageIcon("java.jpg"); restart.setIcon(ret); firstlabel.setFont(new getAllFont().getSomeFont()); Win.setBackground(Color.LIGHT_GRAY); Win.add(begin); Win.add(firstlabel); jframe.add(Win); jframe.setFont(new getAllFont().getHeaderFont()); jframe.setResizable(false);//固定窗口大小 jframe.setVisible(true); jframe.setSize(400,300);//在显示之前加入panel组件 jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); list_Array=new listarray("n3单词").getArray(); for(String page:field) { sum2+=page+"<br>"; } headlabel.setText("<html>"+sum2+"</html>");sum2=""; begin.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { index=8; System.out.println("begin:"+index); Win.repaint(); Win.remove(begin); Win.remove(firstlabel); last.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { System.out.println("last:"+index); if(index>=8) {for(n=index-8;n<index-4;n++) { sum1+=list_Array.get(n)+"<br>";}} index-=4; if(index<3) {label.setText("开头没有更多了,点击下一个单词");} else{label.setText("<html>"+sum1+"</html>");sum1="";}}}); next.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println("next:"+index); if(index+4<=list_Array.size()) {for(n=index;n<index+4;n++) { sum1+=list_Array.get(n)+"<br>";}} index+=4; if(index>list_Array.size()){label.setText("结尾没有更多了,点击上一个单词");} else if(index<=list_Array.size()) {label.setText("<html>"+sum1+"</html>");sum1="";}}}); restart.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { System.out.println("restart:"+index); {jframe.dispose(); jframe.setVisible(true); Win.repaint(); Win.removeAll(); Win.add(begin); Win.setVisible(true); jframe.add(Win); begin.setLocation(150,100); begin=begin; last=last; next=next; restart=restart; System.out.println("restart后的:"+index); }}}); {for(int i=4;i<8;i++) { sum2+=list_Array.get(i)+"<br>";}} label.setText("<html>"+sum2+"</html>");sum2=""; Win.setLayout(null); last.setBounds(-10, 200, 100,75); next.setBounds(300,200,100,75); label.setBounds(50,0,400,160); headlabel.setBounds(10,0,400,160); restart.setBounds(300,50,60,60); Win.add(label); Win.add(last); Win.add(next); Win.add(restart); Win.add(headlabel); jframe.setSize(400,300); jframe.setVisible(true); }}); }} ```
java中Jtable显示数据库查询到的数据
怎么在Jtable中显示从数据库中查询到的结果集,用什么方法,新手请教
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私有的数
win10系统安装教程(U盘PE+UEFI安装)
一、准备工作 u盘,电脑一台,win10原版镜像(msdn官网) 二、下载wepe工具箱  极力推荐微pe(微pe官方下载) 下载64位的win10 pe,使用工具箱制作启动U盘打开软件,   选择安装到U盘(按照操作无需更改) 三、重启进入pe系统   1、关机后,将U盘插入电脑 2、按下电源后,按住F12进入启动项选择(技嘉主板是F12)     选择需要启
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
Nginx 软件层面加强Nginx性能优化的面试问答和解决方案
Nginx 软件层面加强Nginx性能优化的面试问答和解决方案 去年我去爱卡汽车面试PHP,一轮和二轮面的都不错,在三轮面到Nginx的时候很多问题当时不知道怎么回答,确实没有深入学习过,花了一段时间的学习,终于能解答Nginx高性能优化的问题了,10月24号为了获得程序员勋章,发布了半个优化笔记,浏览到了1000+,受到这个鼓舞,我抽时间在仔细整理下关于Nginx性能优化的问题,我们从软件说起。...
【管理系统课程设计】美少女手把手教你后台管理
【文章后台管理系统】URL设计与建模分析+项目源码+运行界面 栏目管理、文章列表、用户管理、角色管理、权限管理模块(文章最后附有源码) 1. 这是一个什么系统? 1.1 学习后台管理系统的原因 随着时代的变迁,现如今各大云服务平台横空出世,市面上有许多如学生信息系统、图书阅读系统、停车场管理系统等的管理系统,而本人家里就有人在用烟草销售系统,直接在网上完成挑选、购买与提交收货点,方便又快捷。 试想,若没有烟草销售系统,本人家人想要购买烟草,还要独自前往药...
11月19日科技资讯|华为明日发布鸿蒙整体战略;京东宣告全面向技术转型;Kotlin 1.3.60 发布
「极客头条」—— 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧。扫描上方二维码进入 CSDN App 可以收听御姐萌妹 Style 的人工版音频哟。 一分钟速览新闻点! 6G 专家组成员:速率是 5G 的 10 至 100 倍,预计 2030 年商用 雷军:很多人多次劝我放弃WPS,能坚持下来并不是纯粹的商业决定 ...
C语言魔塔游戏
很早就很想写这个,今天终于写完了。 游戏截图: 编译环境: VS2017 游戏需要一些图片,如果有想要的或者对游戏有什么看法的可以加我的QQ 2985486630 讨论,如果暂时没有回应,可以在博客下方留言,到时候我会看到。 下面我来介绍一下游戏的主要功能和实现方式 首先是玩家的定义,使用结构体,这个名字是可以自己改变的 struct gamerole { char n
化繁为简 - 腾讯计费高一致TDXA的实践之路
导语:腾讯计费是孵化于支撑腾讯内部业务千亿级营收的互联网计费平台,在如此庞大的业务体量下,腾讯计费要支撑业务的快速增长,同时还要保证每笔交易不错账。采用最终一致性或离线补...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
Java学习笔记(七十二)—— Cookie
概述 会话技术: 会话:一次会话中包含多次请求和响应 一次会话:浏览器第一次给服务器发送资源请求,会话建立,直到有一方断开为止 功能:在一次会话的范围内的多次请求间,共享数据 方式: 客户端会话技术:Cookie,把数据存储到客户端 服务器端会话技术:Session,把数据存储到服务器端 Cookie 概念:客户端会话技术,将数据存储到客户端 快速入门: 使用步骤: 创建C
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆  每天早上8:30推送 作者| Mr.K   编辑| Emma 来源| 技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯
程序员该看的几部电影
##1、骇客帝国(1999) 概念:在线/离线,递归,循环,矩阵等 剧情简介: 不久的将来,网络黑客尼奥对这个看似正常的现实世界产生了怀疑。 他结识了黑客崔妮蒂,并见到了黑客组织的首领墨菲斯。 墨菲斯告诉他,现实世界其实是由一个名叫“母体”的计算机人工智能系统控制,人们就像他们饲养的动物,没有自由和思想,而尼奥就是能够拯救人类的救世主。 可是,救赎之路从来都不会一帆风顺,到底哪里才是真实的世界?
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东
@程序员,如何花式构建线程?
作者 |曾建责编 | 郭芮出品 | CSDN(ID:CSDNnews)在项目和业务的开发中,我们难免要经常使用线程来进行业务处理,使用线程可以保证我们的业务在相互处理之间可以保证原子性...
破14亿,Python分析我国存在哪些人口危机!
2020年1月17日,国家统计局发布了2019年国民经济报告,报告中指出我国人口突破14亿。 猪哥的朋友圈被14亿人口刷屏,但是很多人并没有看到我国复杂的人口问题:老龄化、男女比例失衡、生育率下降、人口红利下降等。 今天我们就来分析一下我们国家的人口数据吧! 一、背景 1.人口突破14亿 2020年1月17日,国家统计局发布了 2019年国民经济报告 ,报告中指出:年末中国大陆总人口(包括31个
强烈推荐10本程序员在家读的书
很遗憾,这个鼠年春节注定是刻骨铭心的,新型冠状病毒让每个人的神经都是紧绷的。那些处在武汉的白衣天使们,尤其值得我们的尊敬。而我们这些窝在家里的程序员,能不外出就不外出,就是对社会做出的最大的贡献。 有些读者私下问我,窝了几天,有点颓丧,能否推荐几本书在家里看看。我花了一天的时间,挑选了 10 本我最喜欢的书,你可以挑选感兴趣的来读一读。读书不仅可以平复恐惧的压力,还可以对未来充满希望,毕竟苦难终
Linux自学篇——linux命令英文全称及解释
man: Manual 意思是手册,可以用这个命令查询其他命令的用法。 pwd:Print working directory 显示当前目录 su:Swith user 切换用户,切换到root用户 cd:Change directory 切换目录 ls:List files 列出目录下的文件 ps:Process Status 进程状态 mk
Python实战:抓肺炎疫情实时数据,画2019-nCoV疫情地图
文章目录1. 前言2. 数据下载3. 数据处理4. 数据可视化 1. 前言 今天,群里白垩老师问如何用python画武汉肺炎疫情地图。白垩老师是研究海洋生态与地球生物的学者,国家重点实验室成员,于不惑之年学习python,实为我等学习楷模。先前我并没有关注武汉肺炎的具体数据,也没有画过类似的数据分布图。于是就拿了两个小时,专门研究了一下,遂成此文。 2月6日追记:本文发布后,腾讯的数据源多次变更u
智力题(程序员面试经典)
NO.1  有20瓶药丸,其中19瓶装有1克/粒的药丸,余下一瓶装有1.1克/粒的药丸。给你一台称重精准的天平,怎么找出比较重的那瓶药丸?天平只能用一次。 解法 有时候,严格的限制条件有可能反倒是解题的线索。在这个问题中,限制条件是天平只能用一次。 因为天平只能用一次,我们也得以知道一个有趣的事实:一次必须同时称很多药丸,其实更准确地说,是必须从19瓶拿出药丸进行称重。否则,如果跳过两瓶或更多瓶药
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ......
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!
2020年的1月,我辞掉了我的第一份工作
其实,这篇文章,我应该早点写的,毕竟现在已经2月份了。不过一些其它原因,或者是我的惰性、还有一些迷茫的念头,让自己迟迟没有试着写一点东西,记录下,或者说是总结下自己前3年的工作上的经历、学习的过程。 我自己知道的,在写自己的博客方面,我的文笔很一般,非技术类的文章不想去写;另外我又是一个还比较热衷于技术的人,而平常复杂一点的东西,如果想写文章写的清楚点,是需要足够...
别低估自己的直觉,也别高估自己的智商
所有群全部吵翻天,朋友圈全部沦陷,公众号疯狂转发。这两周没怎么发原创,只发新闻,可能有人注意到了。我不是懒,是文章写了却没发,因为大家的关注力始终在这次的疫情上面,发了也没人看。当然,我...
Java坑人面试题系列: 包装类(中级难度)
Java Magazine上面有一个专门坑人的面试题系列: https://blogs.oracle.com/javamagazine/quiz-2。 这些问题的设计宗旨,主要是测试面试者对Java语言的了解程度,而不是为了用弯弯绕绕的手段把面试者搞蒙。 如果你看过往期的问题,就会发现每一个都不简单。 这些试题模拟了认证考试中的一些难题。 而 “中级(intermediate)” 和 “高级(ad
Spring Boot 2.x基础教程:使用JdbcTemplate访问MySQL数据库
在第2章节中,我们介绍了如何通过Spring Boot来实现HTTP接口,以及围绕HTTP接口相关的单元测试、文档生成等实用技能。但是,这些内容还不足以帮助我们构建一个动态应用的服务端程序。不论我们是要做App、小程序、还是传统的Web站点,对于用户的信息、相关业务的内容,通常都需要对其进行存储,而不是像第2章节中那样,把用户信息存储在内存中(重启就丢了!)。 对于信息的存储,现在已经有非常非常多...
基于Python的人脸自动戴口罩系统
目录 1、项目背景 2、页面设计 3、器官识别 4、退出系统 1、项目背景 2019年新型冠状病毒感染的肺炎疫情发生以来,牵动人心,举国哀痛,口罩、酒精、消毒液奇货可居。 抢不到口罩,怎么办?作为技术人今天分享如何使用Python实现自动戴口罩系统,来安慰自己,系统效果如下所示: 本系统的实现原理是借助 Dlib模块的Landmark人脸68个关键点检测库轻松识别出人脸五官
相关热词 c#导入fbx c#中屏蔽键盘某个键 c#正态概率密度 c#和数据库登陆界面设计 c# 高斯消去法 c# codedom c#读取cad文件文本 c# 控制全局鼠标移动 c# temp 目录 bytes初始化 c#
立即提问