Java中JTable选中行问题

我有一个table,第一列是checkbox,我给table创建并实现了mouselistener监听器,然后想要实现点击checkbox时,选中checkbox所在的行。主要是我在此之前设置了table.setCellSelectionEnabled(true);使得我点击某个单元格,只有该单元格被选中。我要实现只有当点击了checkbox打勾之后,才选中一整行,其余情况下若点击,则只选中某个单元格。我要怎么实现呢。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
JAVA JTable表格选中的问题
![图片说明](https://img-ask.csdn.net/upload/201706/03/1496480897_236459.png) 每次鼠标选中拖拉,都会把每行的所有列都选中 而我想要的是excell表格那样,比如只选中姓名这一列 有没有大神知道的,求解!!!
java中JTable的问题,求解,大神在哪里
import java.sql.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; public class a160407 extends JFrame implements ActionListener{ JButton anl1,anl2,anl3,anl4; JLabel bq; JTextField wbk; JPanel mb1,mb2; JTable bg; JScrollPane gd; aaaa aa; public static void main(String[] args){ a160407 aaa=new a160407(); } public a160407(){ anl1=new JButton("查询"); anl1.addActionListener(this); anl1.setActionCommand("chaxun"); anl2=new JButton("添加"); anl2.addActionListener(this); anl2.setActionCommand("tianjia"); anl3=new JButton("删除"); anl3.addActionListener(this); anl3.setActionCommand("shanchu"); anl4=new JButton("修改"); anl4.addActionListener(this); anl4.setActionCommand("xiugai"); bq=new JLabel("请输入姓名"); wbk=new JTextField(7); mb1=new JPanel(); mb2=new JPanel(); aa=new aaaa(); bg=new JTable(aa); gd=new JScrollPane(bg); mb1.setLayout(new FlowLayout());mb1.add(bq);mb1.add(wbk);mb1.add(anl1); mb2.setLayout(new FlowLayout());mb2.add(anl2);mb2.add(anl3);mb2.add(anl4); this.add(mb1,BorderLayout.NORTH); this.add(mb2,BorderLayout.SOUTH); this.add(gd); this.setResizable(false); this.setSize(800,600); this.setLocation(300,150); this.setTitle("QQ联系人"); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } public void actionPerformed(ActionEvent e){ if(e.getActionCommand().equals("chaxun")){ String xingming=this.wbk.getText().trim(); String sql="select * from QQ where xinmin='"+xingming+"'"; aa=new aaaa(sql); bg.setModel(aa); } else if(e.getActionCommand().equals("tianjia")){ tianjia tj=new tianjia(this,"信息添加",true); aa=new aaaa(); bg.setModel(aa); System.out.println("fffffffffffffff"); } else if(e.getActionCommand().equals("shanchu")){ int ii=this.bg.getSelectedRow(); if(ii==-1){ JOptionPane.showMessageDialog(this,"请选中要删除的行"); return; } 程序总是运行到下面的这句话出错???????????????????? String st=(String)aa.getValueAt(ii,0);我发现getValueAt(ii,0)中的0改成1或者其他不是0的数程序就正常了,请好心的大神把我解决一下! PreparedStatement ps=null; Connection ct=null; ResultSet rs=null; try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); ct=DriverManager.getConnection("jdbc:odbc:SQL Sever","sa","923274995"); ps=ct.prepareStatement("delete from QQ where xinmin=?"); ps.setString(1,st); ps.executeUpdate(); }catch(Exception e2){} finally{ try { if(rs!=null) { rs.close(); } if(ps!=null) { ps.close(); } if(ct!=null) { ct.close(); } } catch (Exception e3){} }aa=new aaaa(); bg.setModel(aa); } else if(e.getActionCommand().equals("xiugai")){ int ii=this.bg.getSelectedRow(); if(ii==-1){ JOptionPane.showMessageDialog(this,"请选中要修改的行"); return; } new xiugai(this,"信息修改",true,aa,ii); } } } 要解决的问题在上面代码一排问号??????的下面
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 单击与双击的不同效果是什么原因造成的
我设置的是仅一行可选,单击每一行时显示正常 ![每次单击一行](https://img-ask.csdn.net/upload/201606/12/1465710275_506140.png) 但如果双击一行之后再单击另一行 ![双击name为1的之后单击name为tom那个](https://img-ask.csdn.net/upload/201606/12/1465710381_550947.png) 每次双击之后点击另一行,上次点击的选中效果不会消失。 我的Jtable设置的代码: ![这个是在一个Jpanel里面创建的JTable](https://img-ask.csdn.net/upload/201606/12/1465710818_265777.png) ![这个是我自己Jtable子类的设置](https://img-ask.csdn.net/upload/201606/12/1465710977_16671.png)
JAVA JTable 自定义CellEditor中定义了键盘事件,输入时确不响应键盘事件?
做了一个JTable,使用了自定义的单元格编辑器,编辑器继承自JTextField。我在编辑器中定义了键盘事件,用于限定这个编辑器只能输入数字。但在我在表格中输入的时候,使用鼠标点击单格后再输入值,可以正常响应键盘事件,但是用键盘选中该单元格后再输入值时,可以输入任意字符,键盘事件不被触发,定义的输入规则无用。请教高手,如何解决这个问题。
JTable获取行号问题,
final JButton searchButton = new JButton("查找"); //查找按钮 searchButton.addActionListener(new ActionListener(){//添加事件 public void actionPerformed(ActionEvent e){ int x=0; for(x=0;x<table.getRowCount();x++) { if(model.getValueAt(x, 0)==aTextField.getText()) return ; } table.setRowSelectionInterval(x,x); } }); panel.add(searchButton); 当点击查找按钮时出错,我是想定义行号x,循环遍历,当第0列x行的值等于aTextField中输入的值时,返回,用table.setRowSelectionInterval方法选中表格的x行。请大神看看错在哪。
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中选择中,点击按钮后只有向下拉动滚动条才能看到选中的记录,问一下能不能选中后焦点直接跳到选中行。
JTable 能不能实现选中单元格后对应的行标题和列标题变色 即实现excel功能
<p>代码片断如下:</p> <pre name="code" class="java">@Override public void mouseClicked(MouseEvent e) { // 左键单击事件 if (e.getClickCount() == 1) { System.out.println("listener out "); JTable table = (JTable) e.getSource(); Point p = new Point(e.getX(), e.getY()); // 当前选中单元格的坐标 int row = table.rowAtPoint(p); IstatCellRenderer renderer = (IstatCellRenderer) table .getCellRenderer(row, 0); renderer.setCurrentRow(row); } </pre> <p> </p> <p>就是在单元格单击事件中取得cellRenderer后改变自定义的变量currentRow为鼠标所在单元格的行,然后再getTableCellRendererComponent方法中判断改变标题的颜色,代码如下:</p> <pre name="code" class="java">@Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); IstatTableModel model = (IstatTableModel) table.getModel(); // 只读单元格行标题的颜色 if (column == 0) { System.out.println("renderer out row:" + row + " currentRow:" + currentRow); if (row == currentRow) {// 如果当前行等于选中行,则行标题的颜色设置为单元格选中的颜色 setBackground(table.getSelectionBackground()); } else { setBackground(table.getTableHeader().getBackground()); } } else { //作其他事情 } return this; } </pre> <p> </p> <p>但是监听器是在getTableCellRendererComponent方法后面执行的,所也无法实现,大家有没有好的意见。</p>
为什么java显示数据库连接成功但是却显示不出表
![图片说明](https://img-ask.csdn.net/upload/201911/19/1574175022_893822.png) 代码如下: ``` Vector rowData,columnNames; columnNames = new Vector(); rowData = new Vector(); columnNames.add("学号"); columnNames.add("学生姓名"); columnNames.add("性别"); columnNames.add("出生日期"); columnNames.add("班级"); columnNames.add("学院"); columnNames.add("年级"); try { connect_sql consql = new connect_sql();//创建对象 Connection conn = consql.getConnection();//链接数据库 try { Statement sta = conn.createStatement();//创建sql语句的接口 ResultSet result = sta.executeQuery("select*from student");//result接受语句选中student表 ResultSetMetaData metaData = result.getMetaData();//接受result中的元数据 while(result.next()) { Vector hang = new Vector(); int id = result.getInt(1); String name = result.getString(2); String sex = result.getString(3); String brithday = result.getString(4); String className = result.getString(5); String insititute = result.getString(6); int grade = result.getInt(7); hang.add(id);hang.add(name);hang.add(sex);hang.add(brithday); hang.add(className);hang.add(insititute);hang.add(grade); rowData.add(hang); } } catch(Exception e) { e.printStackTrace(); conn.close(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } DefaultTableModel model = new DefaultTableModel(rowData,columnNames); JTable jTable = new JTable(model);//创建表格组件 jTable.setAutoResizeMode(JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS); jsp.add(jTable); ```
JAVA风景日历,运行时,日历是有了,但风景没有,这是为什么?
运行是这样 ![图片说明](https://img-ask.csdn.net/upload/201911/14/1573703884_780623.jpg) 但是想要这样![图片说明](https://img-ask.csdn.net/upload/201911/14/1573708341_322515.jpg) ``` import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.*; import java.util.Timer; import javax.swing.*; import javax.swing.event.*; import javax.swing.table.*; //这是一个用JList和JTable完成的简单日历 public class calender { public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { JFrame frame = new CalendarFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } }); } } class CalendarFrame extends JFrame { private static final long serialVersionUID = 8067844586793608064L; JPanel listPanel; // 显示月份的列表面板 JPanel tablePanel; // 显示日期的表格面板 JPanel textPanel; // 文本面板 JMenuBar menuBar; // JMenuBar,JMenu定义的变量都没有实现功能 JMenu fileMenu; JMenu editMenu; JMenu formatMenu; JMenu lookMenu; JMenu helpMenu; JEditorPane text; // 自带复制,剪切和删除快捷键功能的面板 JScrollPane textscrollpane; JScrollPane tablescrollpane; @SuppressWarnings("rawtypes") JList list; // 显示月份的列表 JTable table; // 显示日期的表格 JPanel yearPanel; // 显示年份的面板 JSpinner spinner; // JSpinner空间 JLabel label = new JLabel(); public static boolean flag = true; @SuppressWarnings({ "unchecked", "rawtypes" }) public CalendarFrame() { table = new JTable(new MyTableModel()); tablescrollpane = new JScrollPane(table); for (int i = 0; i < 7; i++) { TableColumn column = table.getColumnModel().getColumn(i);// 获取表格每一列 column.setResizable(false);// 不允许改变列的大小 } table.setBackground(Color.GREEN); table.setRowHeight(72); // 设定每列的大小 table.setRowSelectionAllowed(false);// 设定行的选择模式 table.setDefaultRenderer(String.class, new MyTableRenderer()); list = new JList(new AbstractListModel() // 匿名的list模型类,提供list显示的月份数据 { private static final long serialVersionUID = -3703164069291737586L; public Object getElementAt(int index) { String obj = null; switch (index) { case 0: obj = "Jan"; break; case 1: obj = "Feb"; break; case 2: obj = "Mar"; break; case 3: obj = "Apr"; break; case 4: obj = "May"; break; case 5: obj = "Jun"; break; case 6: obj = "Jul"; break; case 7: obj = "Aug"; break; case 8: obj = "Sep"; break; case 9: obj = "Oct"; break; case 10: obj = "Nov"; break; case 11: obj = "Dec"; break; } return obj; } @Override public int getSize() { return 12; } }); list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); // 设定列表的选择模式 list.setCellRenderer(new MyListCellRenderer()); // 列表元素的绘制类MyListCellRenderer list.setSelectedIndex(Calendar.getInstance().get(Calendar.MONTH));// JList默认的月份为现实的月份 list.addListSelectionListener(new ListSelectionListener()// 当某个列表被选中时,更新日期table控件 { public void valueChanged(ListSelectionEvent e) { flag = true; table.updateUI(); } }); list.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { if (evt.getClickCount() == 2) { String s = (String) list.getSelectedValue(); JOptionPane.showMessageDialog(list, s); } } }); listPanel = new JPanel(); listPanel.setLayout(new BorderLayout()); listPanel.add(list); tablePanel = new JPanel(); tablePanel.setBackground(Color.white); tablePanel.setLayout(new BorderLayout()); tablePanel.add(tablescrollpane); // table.setBackground(Color.green); yearPanel = new JPanel();// 将label控件和JSpinner控件加入年份面板上 yearPanel.setLayout(new GridLayout(0, 4)); JLabel gongyuan = new JLabel("公元", JLabel.RIGHT); JLabel year = new JLabel("年"); spinner = new JSpinner(new SpinnerNumberModel(Calendar.getInstance() .get(Calendar.YEAR), null, null, 1)); spinner.addChangeListener(new ChangeListener() // 为JSpinner空间添加事件监听器 { @Override public void stateChanged(ChangeEvent e) { flag = true; table.updateUI(); } }); yearPanel.add(gongyuan); yearPanel.add(spinner); yearPanel.add(year); yearPanel.add(label); showTime(); new Timer().schedule(new TimerTask() { @Override public void run() { while (true) { showTime(); } } }, 1000); tablePanel.add(yearPanel, BorderLayout.NORTH);// 将年份面板加入到表格面板的北部 textPanel = new JPanel(); textPanel.setLayout(new BorderLayout()); text = new JEditorPane(); textscrollpane = new JScrollPane(text); textPanel.add(textscrollpane); text.setFont(new Font("SansSerif", Font.PLAIN, 40)); tablePanel.add(textPanel, BorderLayout.SOUTH); menuBar = new JMenuBar();// JMenu定义的空间都没实现功能 fileMenu = new JMenu("文件"); editMenu = new JMenu("编辑"); formatMenu = new JMenu("格式"); lookMenu = new JMenu("查看"); helpMenu = new JMenu("帮助"); menuBar.add(fileMenu); menuBar.add(editMenu); menuBar.add(formatMenu); menuBar.add(lookMenu); menuBar.add(helpMenu); GridBagLayout layout = new GridBagLayout(); // 设成GridBagLayout布局 GridBagConstraints constraints = new GridBagConstraints(); this.setFont(new Font("SansSerif", Font.PLAIN, 14)); this.setLayout(layout); this.setTitle("风景日历"); // 设定标题 this.setIconImage(new ImageIcon("res\\title.jpg").getImage()); // 设定图标 constraints.fill = GridBagConstraints.BOTH; constraints.weightx = 0.5; constraints.weighty = 0.5; layout.setConstraints(listPanel, constraints); constraints.weightx = 8.0; constraints.weighty = 0.5; layout.setConstraints(tablePanel, constraints); this.setJMenuBar(menuBar); this.add(listPanel); this.add(tablePanel); this.setSize(this.getToolkit().getScreenSize().width * 3 / 4, this .getToolkit().getScreenSize().height * 3 / 4); // 设定窗体的大小 } private void showTime() { int hour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY); int minute = Calendar.getInstance().get(Calendar.MINUTE); int second = Calendar.getInstance().get(Calendar.SECOND); StringBuilder sb = new StringBuilder(); if (hour < 10) { sb.append("0" + hour); } else { sb.append(hour); } if (minute < 10) { sb.append(":0" + minute); } else { sb.append(":" + minute); } if (second < 10) { sb.append(":0" + second); } else sb.append(":" + second); label.setFont(new Font("SansSerif", Font.BOLD, 12)); label.setForeground(Color.BLACK); label.setText(sb.toString()); } class MyTableModel extends AbstractTableModel // 表格模型类,提供表格数据 { private static final long serialVersionUID = 1L; String[] columnName = new String[] // 表格列名 { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" }; @Override public int getColumnCount() // 返回表格列数 { return columnName.length; } public int getRowCount() // 返回表格行数 { return 6; } public String getColumnName(int col) // 获得表格列名 { return columnName[col]; } public Class<? extends Object> getColumnClass(int c) { return getValueAt(0, c).getClass(); } public Object getValueAt(int rowIndex, int columnIndex) { int month = list.getSelectedIndex();// 获得列表的月份 int year = (Integer) spinner.getValue();// 获得spinner显示的年份 GregorianCalendar gc = new GregorianCalendar(year, month, 1); int dayOfWeek = gc.get(Calendar.DAY_OF_WEEK) - 1; // 获得这个月的第一天是星期几 int countDayInMonth = 0;// 某月的总天数,这里的月是从0-11,表示1-12月 if (month == 0 || month == 2 || month == 4 || month == 6 || month == 7 || month == 9 || month == 11) { countDayInMonth = 31; // 是31天的月份 } else if (month == 3 || month == 5 || month == 8 || month == 10) { countDayInMonth = 30; // 是30天的月份 } else if (gc.isLeapYear(year) && month == 1) { countDayInMonth = 29; // 闰年2月 } else if (!gc.isLeapYear(year) && month == 1) { countDayInMonth = 28; // 非闰年2月 } String value = ""; // 因为返回值是Object类型,所以不能直接返回int类型的数据,所以转换成String类型 if (rowIndex == 0) // 第一列的数据 { if (columnIndex < dayOfWeek) { value = ""; } else { value = "" + (columnIndex - dayOfWeek + 1); } } else // 其余列的数据 { if (((rowIndex - 1) * 7) + (columnIndex + 1 + 7 - dayOfWeek) <= countDayInMonth) value = (((rowIndex - 1) * 7) + (columnIndex + 1 + 7 - dayOfWeek)) + ""; } return value; } } @SuppressWarnings("rawtypes") class MyListCellRenderer extends JLabel implements ListCellRenderer // 列表元素绘制类继承自JLabel,实现ListCellRenderer接口 { private static final long serialVersionUID = 1L; public Component getListCellRendererComponent(JList list, // the list Object value, // value to display int index, // cell index boolean isSelected, // is the cell selected boolean cellHasFocus) // does the cell have focus { String s = value.toString().trim(); // 获取选中元素的字符内容 setText(s); // 显示这个字符 Dimension dimension = list.getSize(); // 设定这个每个元素的大小 int height = dimension.height / 12; int width = dimension.width; setSize(width, height); if (isSelected) // 如果该元素被选中,则背景色为红色 { setBackground(Color.red); setForeground(list.getSelectionBackground()); } else // 未被选中的元素背景色显示为灰色,前景色为粉红色 { setBackground(Color.gray); setForeground(Color.pink); } setIcon(new ImageIcon("res\\mon.jpg")); // 设定该元素的图标 setEnabled(list.isEnabled()); setFont(new Font("SansSerif", Font.PLAIN, 20)); // 设定字体大小 setOpaque(true); return this; } } class MyTableRenderer extends JLabel implements TableCellRenderer { private static final long serialVersionUID = 1L; public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { if ((Calendar.getInstance().get(Calendar.DAY_OF_MONTH) + "") // 如果这个标签上的值等于该天的值 .equals(value) && flag == true // 标记为true && list.getSelectedIndex() == Calendar.getInstance().get( Calendar.MONTH) // 列表显示的月份是该月的值 && (Integer) spinner.getValue() == Calendar.getInstance() .get(Calendar.YEAR))// spinner显示的年份是该年 { setFont(new Font("SansSerif", Font.PLAIN, 40)); // 设定字体大小 setText((String) value); // 显示日期字符串 setBorder(UIManager.getBorder("Table.focusCellHighlightBorder")); setForeground(Color.RED); // 设定字符串颜色 flag = false; } else // 如果不是改日的标签上的值 { setFont(new Font("SansSerif", Font.PLAIN, 40)); // 设定字体大小 setText((String) value); // 显示标签上的日期字符串 if (hasFocus) // 如果是被点中的表格的单元格 { setBorder(UIManager .getBorder("Table.focusCellHighlightBorder")); // 设定边框 setForeground(Color.RED);// 设定日期字符串颜色 } else { setForeground(null); setBorder(null); } } return this; } } } ```
想问一下如何在日历系统里插入图片
大二萌新做课设风景日历制作系统,图片不会插入,希望向各位大佬求助 ``` import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.table.*; public class MyCalendar extends JApplet { //定义星期天到星期六全局变量 public static final String WEEK_SUN = "星期日"; //星期标签名称 public static final String WEEK_MON = "星期一"; public static final String WEEK_TUE = "星期二"; public static final String WEEK_WED = "星期三"; public static final String WEEK_THU = "星期四"; public static final String WEEK_FRI = "星期五"; public static final String WEEK_SAT = "星期六"; public static final Color background = Color.white; //设置背景颜色 public static final Color foreground = Color.black; //设置前景颜色 public static final Color headerBackground = Color.blue; //设置题头星期的背景颜色 public static final Color headerForeground = Color.white; //设置题头星期的前景颜色 public static final Color selectedBackground = Color.green; //设置被选中的日期的背景颜色 public static final Color selectedForeground = Color.white; //设置被选中的日期的前景颜色 private JPanel cPane; //日历面板 private JLabel yearsLabel; //"年份"标签 private JSpinner yearsSpinner; //年调控,年份组合框 private JLabel monthsLabel; //"月份"标签 private JComboBox monthsComboBox;//12月下拉框 private JTable daysTable; //用来显示日期的table,日表格 private AbstractTableModel daysModel;//天单元表格 private Calendar calendar; //日历对象 //函数定义 public MyCalendar() { //构造函数 cPane = (JPanel) getContentPane(); } public void init() { //初始化,对所有的空间进行布局,面板界面函数 cPane.setLayout(new BorderLayout()); //使用border布局管理器 calendar = Calendar.getInstance();//默认方式,以本地的时区和地区来构造Calendar yearsLabel = new JLabel("年份: ");//设置年份标签显示 yearsSpinner = new JSpinner();//构造年份spinner组合框 yearsSpinner.setEditor(new JSpinner.NumberEditor(yearsSpinner, "0000")); yearsSpinner.setValue(new Integer(calendar.get(Calendar.YEAR))); //增加监听 监听年份的改变 yearsSpinner.addChangeListener(new ChangeListener() {//注册该组合框的事件监听器 public void stateChanged(ChangeEvent changeEvent) { int day = calendar.get(Calendar.DAY_OF_MONTH); calendar.set(Calendar.DAY_OF_MONTH, 1); calendar.set(Calendar.YEAR, ((Integer) yearsSpinner.getValue()).intValue()); int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); calendar.set(Calendar.DAY_OF_MONTH, day > maxDay ? maxDay : day); updateView();//更新显示 } }); JPanel yearMonthPanel = new JPanel();//定义年月面板 cPane.add(yearMonthPanel, BorderLayout.NORTH);//添加年月面板到日历面板的南面(最上方) yearMonthPanel.setLayout(new BorderLayout());//边布局模式 yearMonthPanel.add(new JPanel(), BorderLayout.CENTER); JPanel yearPanel = new JPanel();//构建年份面板 yearMonthPanel.add(yearPanel, BorderLayout.WEST);//年份面板添加到年月面板西部(左边) yearPanel.setLayout(new BorderLayout());//设置年份面板为边布局并添加年份标签和组合框 yearPanel.add(yearsLabel, BorderLayout.WEST); yearPanel.add(yearsSpinner, BorderLayout.CENTER); monthsLabel = new JLabel("月份: "); //设置月份标签显示 monthsComboBox = new JComboBox(); //向月份下拉框中增加内容 for (int i = 1; i <= 12; i++) { //构造下拉框的12个月份 monthsComboBox.addItem(new Integer(i)); } monthsComboBox.setSelectedIndex(calendar.get(Calendar.MONTH));//下拉框当前月份为选中状态 monthsComboBox.addActionListener(new ActionListener() { //注册月份下拉框的事件监听器 public void actionPerformed(ActionEvent actionEvent) { int day = calendar.get(Calendar.DAY_OF_MONTH); calendar.set(Calendar.DAY_OF_MONTH, 1); calendar.set(Calendar.MONTH, monthsComboBox.getSelectedIndex()); int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); calendar.set(Calendar.DAY_OF_MONTH, day > maxDay ? maxDay : day); updateView();//更新面板显示 } }); JPanel monthPanel = new JPanel();//定义月份面板 yearMonthPanel.add(monthPanel, BorderLayout.EAST);//添加月份面板到年月面板的东面(右面) monthPanel.setLayout(new BorderLayout());//月份面板设为边布局方式 monthPanel.add(monthsLabel, BorderLayout.WEST);//添加月份名称标签到月份面板西面(左面) monthPanel.add(monthsComboBox, BorderLayout.CENTER);//添加月份下拉框到月份面板中间 daysModel = new AbstractTableModel() { //设置7行7列 public int getRowCount() { //设置7行 return 7; } public int getColumnCount() { //设置列7 return 7; } public Object getValueAt(int row, int column) { if (row == 0) { //第一行显示星期 return getHeader(column); } row--; Calendar calendar = (Calendar) MyCalendar.this.calendar.clone(); calendar.set(Calendar.DAY_OF_MONTH, 1); int dayCount = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); int moreDayCount = calendar.get(Calendar.DAY_OF_WEEK) - 1; int index = row * 7 + column; int dayIndex = index - moreDayCount + 1; if (index < moreDayCount || dayIndex > dayCount) { return null; } else { return new Integer(dayIndex); } } }; daysTable = new CalendarTable(daysModel, calendar);//构造日表格 //设置每个call可以被选中 daysTable.setCellSelectionEnabled(true);//设置表格单元格可选择 daysTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); daysTable.setDefaultRenderer(daysTable.getColumnClass(0), new TableCellRenderer() { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { String text = (value == null) ? "" : value.toString(); JLabel cell = new JLabel(text); cell.setOpaque(true);//绘制边界内的所有像素 if (row == 0) {//第一行显示星期,设置为星期的前景色和背景色 cell.setForeground(headerForeground); cell.setBackground(headerBackground); } else { if (isSelected) {//日期单元格如果选中,则设置为日期选中的前、背景色 cell.setForeground(selectedForeground); cell.setBackground(selectedBackground); } else { //设置日期单元格的普通前、背景色 cell.setForeground(foreground); cell.setBackground(background); } } return cell; } }); updateView(); cPane.add(daysTable, BorderLayout.CENTER);//添加日面板到日历面板中间 } public static String getHeader(int index) {//设置第一行星期的显示 switch (index) { case 0: return WEEK_SUN; case 1: return WEEK_MON; case 2: return WEEK_TUE; case 3: return WEEK_WED; case 4: return WEEK_THU; case 5: return WEEK_FRI; case 6: return WEEK_SAT; default: return null; } } public void updateView() {//更新面板显示方法 daysModel.fireTableDataChanged(); daysTable.setRowSelectionInterval(calendar.get(Calendar.WEEK_OF_MONTH), calendar.get(Calendar.WEEK_OF_MONTH)); daysTable.setColumnSelectionInterval(calendar.get(Calendar.DAY_OF_WEEK) - 1, calendar.get(Calendar.DAY_OF_WEEK) - 1); } //设置日历的table public static class CalendarTable extends JTable {//表格类 private Calendar calendar; public CalendarTable(TableModel model, Calendar calendar) {//构造方法 super(model); this.calendar = calendar; } public void changeSelection(int row, int column, boolean toggle, boolean extend) {//选择表格单元格时 super.changeSelection(row, column, toggle, extend); if (row == 0) {//选择为第一行(星期)时不改变单元格 return; } Object obj = getValueAt(row, column); if (obj != null) { calendar.set(Calendar.DAY_OF_MONTH, ((Integer)obj).intValue()); } } } //让applet作为一个可执行的程序来运行 public static void main(String[] args) { JFrame frame = new JFrame("Calendar Application"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); MyCalendar myCalendar = new MyCalendar(); myCalendar.init(); frame.getContentPane().add(myCalendar); frame.setSize(400, 250); frame.show(); } } ```
如何利用jtable删除数据库一条信息
public class userinfo { private String USERACCOUNT; private String USERNAME; private String NICKNAME; private String PASSWORD; private int SEX; private String PHONE; private String EMAIL; private String REGION; private String MYINFO; private String HEADPIC; private int DEPTID; public userinfo(){} public userinfo(String USERACCOUNT,String USERNAME,String NICKNAME,String PASSWORD,int SEX,String PHONE, String EMAIL, String REGION,String MYINFO,String HEADPIC,int DEPTID) { this.USERACCOUNT=USERACCOUNT; this.USERNAME=USERNAME; this.NICKNAME=NICKNAME; this.PASSWORD=PASSWORD; this.SEX=SEX; this.PHONE=PHONE; this.EMAIL=EMAIL; this.REGION=REGION; this.MYINFO=MYINFO; this.HEADPIC=HEADPIC; this.DEPTID=DEPTID; } public String getUSERACCOUNT(){ return USERACCOUNT; } public void setUSERACCOUNT(String USERACCOUNT){ this.USERACCOUNT=USERACCOUNT; } public String getUSERNAME(){ return USERNAME; } public void setUSERNAME(String USERNAME){ this.USERNAME=USERNAME; } public String getNICKNAME(){ return NICKNAME; } public void setNICKNAME(String NICKNAME){ this.NICKNAME=NICKNAME; } public String getPASSWORD(){ return PASSWORD; } public void setPASSWORD(String PASSWORD){ this.PASSWORD=PASSWORD; } public int getSEX(){ return SEX; } public void setSEX(int SEX){ this.SEX=SEX; } public String getPHONE(){ return PHONE; } public void setPHONE(String PHONE){ this.PHONE=PHONE; } public String getEMAIL(){ return EMAIL; } public void setEMAIL(String EMAIL){ this.EMAIL=EMAIL; } public String getREGION(){ return REGION; } public void setREGION( String REGION){ this.REGION=REGION; } public String getMYINFO(){ return MYINFO; } public void setMYINFO(String MYINFO){ this.MYINFO=MYINFO; } public String getHEADPIC(){ return HEADPIC; } public void setHEADPIC(String HEADPIC){ this.HEADPIC=HEADPIC; } public int getDEPTID(){ return DEPTID; } public void setDEPTID(int DEPTID){ this.DEPTID=DEPTID; } void show(){ System.out.print( USERACCOUNT+" "+USERNAME+" "+NICKNAME+" "+PASSWORD+" "+SEX+" "+PHONE+" "+ EMAIL+" "+REGION+" "+MYINFO+" "+HEADPIC+" "+DEPTID+" "+"\n"); } } public void delete(userinfo u){ Connection con=BaseDAO.getConnection(); try{ String sql ="delete from t_UserInfo where USERACCOUNT=? and USERNAME=? and NICKNAME=? and PASSWORD=? and SEX=? and PHONE=? and EMAIL=? and REGION=? and MYINFO=? and HEADPIC=? and DEPTID=? "; PreparedStatement pstmt=con.prepareStatement(sql); pstmt.setString(1,u.getUSERACCOUNT() ); pstmt.setString(2, u.getUSERNAME()); pstmt.setString(3, u.getNICKNAME()); pstmt.setString(4, u.getPASSWORD()); pstmt.setInt(5, u.getSEX()); pstmt.setString(6, u.getPHONE()); pstmt.setString(7, u.getEMAIL()); pstmt.setString(8, u.getREGION()); pstmt.setString(9, u.getMYINFO()); pstmt.setString(10, u.getHEADPIC()); pstmt.setInt(11, u.getDEPTID()); int num=pstmt.executeUpdate(); if(num>0){ System.out.println("删除成功"); }else{ System.out.println("删除失败"); } BaseDAO.closeStatement(pstmt); BaseDAO.closeConnection(con); }catch(Exception e){ e.printStackTrace(); } } private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: } 在jbutton2中添加什么样的代码才能实现鼠标选中jtable中的一行的时候点击删除,直接删除,而且连同数据库的一起删除![图片说明](https://img-ask.csdn.net/upload/201601/05/1451984879_753791.png)
求助Java语言做得电子邮件系统,收件箱有问题,内容显示不出来,求帮忙
package utils; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Vector; import javax.swing.JTable; import javax.swing.SwingUtilities; import mailutil.GetMail; import frame.JProgressBarFrame; import frame.MainFrame; public class ReceiveMailTable extends Thread { private Vector mails = null;// 构造一个空向量,使其内部数据数组的大小为 // 10,其标准容量增量为零。 private static Vector<Vector<String>> mailListVector = null;// 收取邮件列表模型 private static GetMail getmail = null; private RecycleMailTable recycleMail = null; private static JTable deleteMailTable = null;// 删除邮件表格 private MailTableModel tableModel = null; public static LinkedList<String> list = new LinkedList<String>(); private static ReceiveMailTable mail2Table = null;// 单例模式得到本类对象 private static JProgressBarFrame progressBar = new JProgressBarFrame( MainFrame.MAINFRAME, "收件箱", "正在查收邮件,请稍后..."); private ReceiveMailTable() { getmail = GetMail.getMailInstantiate(); } public static ReceiveMailTable getMail2Table() {// 单例模式得到本类对象 if (mail2Table == null) { progressBar.setVisible(true); mail2Table = new ReceiveMailTable(); mail2Table.start(); } return mail2Table; } public static boolean isInitMail2Table() {// 判断本类对象是否初始化 boolean isInit = false; if (mail2Table != null) isInit = true; return isInit; } // 设置邮件列表表格 public void setDeleteMailTable(JTable jTable) { deleteMailTable = jTable; } // 刷新邮件列表时用到 public void startReceiveMail() { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { progressBar.setVisible(true); MainFrame.addIFame(FrameFactory.getFrameFactory() .getReceiveFrame());// 将收件箱界面显示在主窗口中 } }); new Thread() {// 开启新的线程刷新邮件列表 public void run() { mailToTable(); } }.start(); } @Override public void run() { mailToTable(); } // 将邮件信息添加到表格中 public void mailToTable() { try { Iterator it = getmail.getMailInfo(getmail.getAllMail()).iterator(); Map map = null; // 将邮件信息列表显示在表格中 if (deleteMailTable.getRowCount() > 0) { deleteMailTable.removeAll();// 移除表格中的所有内容 mailListVector.removeAllElements();// 移除模型中的所有内容 list.clear();// 从此列表中移除所有元素 } while (it.hasNext()) { mails = new Vector<String>(); map = (Map) it.next(); mails.add("<html><strong>" + map.get("sender") + "</strong></html>"); mails.add("<html><strong>" + map.get("subject") + "</strong></html>"); mails.add("<html><strong>" + map.get("senddate") + "</strong></html>"); mails.add("<html><strong>" + map.get("hasAttach") + "</strong></html>"); list.add((String) map.get("ID")); mailListVector.add(mails); } SwingUtilities.invokeLater(new Runnable() { @Override public void run() { deleteMailTable.validate();// 动态的更新表格 deleteMailTable.repaint(); progressBar.setVisible(false); } }); } catch (Exception e) { e.printStackTrace(); } } // 读取邮件内容 public static String readMail(LinkedList<String> linkedList, int id) {// id行号 String message = null; String mailID = (String) linkedList.get(id);// 返回指定行对应的mailID号 try { Map result = getmail.readMail(mailID); message = result.get("content").toString();// 得到邮件内容 } catch (Exception e) { e.printStackTrace(); } return message; } // 将邮件移到回收站 public void moveMail2Recycle(int id) { recycleMail = RecycleMailTable.getRecycleMail();// 初始化回收站 recycleMail.getMailTableModel();// 得到回收站的表格模型 recycleMail.addRecycleMail(mailListVector.get(id), list.get(id));// 将邮件移到回收站 } // 删除邮件 public void deleteMail(int id) {// id 选择的行号 mailListVector.removeElementAt(id);// 删除表格中选中邮件对应的行 list.remove(id); deleteMailTable.updateUI();// 动态的更新表格 deleteMailTable.validate();// 动态的更新表格 deleteMailTable.repaint(); } // 恢复邮件 public static void recoverMail(Vector<String> vector, String mailId) { mailListVector.add(vector); list.add(mailId); deleteMailTable.updateUI();// 动态的更新表格 deleteMailTable.validate();// 动态的更新表格 deleteMailTable.repaint(); } // 彻底删除邮件 public static boolean deleteMailForever(int[] selectMail, int id, List list) { boolean isDelete = false; String[] mailID = new String[id]; for (int i = 0; i < id; i++) { mailID[i] = (String) list.get(selectMail[i]);// 返回指定行对应的mailID号 } isDelete = getmail.deleteMail(mailID);// 彻底删除邮件 return isDelete; } public MailTableModel getMailTableModel() {// 邮件表格模型 if (tableModel == null) tableModel = new MailTableModel(); mailListVector = tableModel.getVector(); return tableModel; } }
相见恨晚的超实用网站
搞学习 知乎:www.zhihu.com 简答题:http://www.jiandati.com/ 网易公开课:https://open.163.com/ted/ 网易云课堂:https://study.163.com/ 中国大学MOOC:www.icourse163.org 网易云课堂:study.163.com 哔哩哔哩弹幕网:www.bilibili.com 我要自学网:www.51zxw
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载    点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量 path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。
字节跳动视频编解码面经
引言 本文主要是记录一下面试字节跳动的经历。 三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时
开源一个功能完整的SpringBoot项目框架
福利来了,给大家带来一个福利。 最近想了解一下有关Spring Boot的开源项目,看了很多开源的框架,大多是一些demo或者是一个未成形的项目,基本功能都不完整,尤其是用户权限和菜单方面几乎没有完整的。 想到我之前做的框架,里面通用模块有:用户模块,权限模块,菜单模块,功能模块也齐全了,每一个功能都是完整的。 打算把这个框架分享出来,供大家使用和学习。 为什么用框架? 框架可以学习整体
小白如何学习java?
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
【C++】C++11的std::array的详细剖析
当学习C++的时候,数组是最基本的结构之一,通常通过以下的方式来定义: int a[5]; int *b = new int[5]; 上面一句是在栈上定义了一个长度为5的数组,下面一句是在堆上定义了一个长度为5的数组,并用一个指针指向它。 在C++11中,引入了一种新的数组定义方式std::array。 std::array的特性 std::array是具有固定大小的数组。因此,它并不支持添加...
Python 基础(一):入门必备知识
Python 入门必备知识,你都掌握了吗?
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 cpp 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7 p...
写了很久,这是一份最适合/贴切普通大众/科班/非科班的『学习路线』
说实话,对于学习路线这种文章我一般是不写的,大家看我的文章也知道,我是很少写建议别人怎么样怎么样的文章,更多的是,写自己的真实经历,然后供大家去参考,这样子,我内心也比较踏实,也不怕误导他人。 但是,最近好多人问我学习路线,而且很多大一大二的,说自己很迷茫,看到我那篇 普普通通,我的三年大学 之后很受激励,觉得自己也能行,(是的,别太浪,你一定能行)希望我能给他个学习路线,说...
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
致 Python 初学者
文章目录1. 前言2. 明确学习目标,不急于求成,不好高骛远3. 在开始学习 Python 之前,你需要做一些准备2.1 Python 的各种发行版2.2 安装 Python2.3 选择一款趁手的开发工具3. 习惯使用IDLE,这是学习python最好的方式4. 严格遵从编码规范5. 代码的运行、调试5. 模块管理5.1 同时安装了py2/py35.2 使用Anaconda,或者通过IDE来安装模
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,
程序员:我终于知道post和get的区别
IT界知名的程序员曾说:对于那些月薪三万以下,自称IT工程师的码农们,其实我们从来没有把他们归为我们IT工程师的队伍。他们虽然总是以IT工程师自居,但只是他们一厢情愿罢了。 此话一出,不知激起了多少(码农)程序员的愤怒,却又无可奈何,于是码农问程序员。 码农:你知道get和post请求到底有什么区别? 程序员:你看这篇就知道了。 码农:你月薪三万了? 程序员:嗯。 码农:你是怎么做到的? 程序员:
羞,Java 字符串拼接竟然有这么多姿势
二哥,我今年大二,看你分享的《阿里巴巴 Java 开发手册》上有一段内容说:“循环体内,拼接字符串最好使用 StringBuilder 的 append 方法,而不是 + 号操作符。”到底为什么啊,我平常一直就用的‘+’号操作符啊!二哥有空的时候能否写一篇文章分析一下呢? 就在昨天,一位叫小菜的读者微信我说了上面这段话。 我当时看到这条微信的第一感觉是:小菜你也太菜了吧,这都不知道为啥啊!我估
"狗屁不通文章生成器"登顶GitHub热榜,分分钟写出万字形式主义大作
GitHub 被誉为全球最大的同性交友网站,……,陪伴我们已经走过 10+ 年时间,它托管了大量的软件代码,同时也承载了程序员无尽的欢乐。 万字申请,废话报告,魔幻形式主义大作怎么写?兄dei,狗屁不通文章生成器了解一下。这个富有灵魂的项目名吸引了众人的目光。项目仅仅诞生一周,便冲上了GitHub趋势榜榜首(Js中文网 -前端进阶资源教程)、是榜首哦
推荐几款比较实用的工具,网站
1.盘百度PanDownload   这个云盘工具是免费的,可以进行资源搜索,提速(偶尔会抽风......) 不要去某站买付费的......   PanDownload下载地址   2.BeJSON 这是一款拥有各种在线工具的网站,推荐它的主要原因是网站简洁,功能齐全,广告相比其他广告好太多了     bejson网站   3.二维码美化 这个网站的二维码美化很好看,网站界面
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI 算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC
8年经验面试官详解 Java 面试秘诀
    作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。   Java程序员准备和投递简历的实
面试官如何考察你的思维方式?
1.两种思维方式在求职面试中,经常会考察这种问题:北京有多少量特斯拉汽车? 某胡同口的煎饼摊一年能卖出多少个煎饼? 深圳有多少个产品经理? 一辆公交车里能装下多少个乒乓球? 一
碎片化的时代,如何学习
今天周末,和大家聊聊学习这件事情。 在如今这个社会,我们的时间被各类 APP 撕的粉碎。 刷知乎、刷微博、刷朋友圈; 看论坛、看博客、看公号; 等等形形色色的信息和知识获取方式一个都不错过。 貌似学了很多,但是却感觉没什么用。 要解决上面这些问题,首先要分清楚一点,什么是信息,什么是知识。 那什么是信息呢? 你一切听到的、看到的,都是信息,比如微博上的明星出轨、微信中的表情大战、抖音上的段子
so easy! 10行代码写个"狗屁不通"文章生成器
前几天,GitHub 有个开源项目特别火,只要输入标题就可以生成一篇长长的文章。背后实现代码一定很复杂吧,里面一定有很多高深莫测的机器学习等复杂算法不过,当我看了源代码之后这程序不到50
知乎高赞:中国有什么拿得出手的开源软件产品?(整理自本人原创回答)
知乎高赞:中国有什么拿得出手的开源软件产品? 在知乎上,有个问题问“中国有什么拿得出手的开源软件产品(在 GitHub 等社区受欢迎度较好的)?” 事实上,还不少呢~ 本人于2019.7.6进行了较为全面的 回答 - Bravo Yeung,获得该问题下回答中得最高赞(236赞和1枚专业勋章),对这些受欢迎的 Github 开源项目分类整理如下: 分布式计算、云平台相关工具类 1.SkyWalk
记一次腾讯面试:进程之间究竟有哪些通信方式?如何通信? ---- 告别死记硬背
有一次面试的时候,被问到进程之间有哪些通信方式,不过由于之前没深入思考且整理过,说的并不好。想必大家也都知道进程有哪些通信方式,可是我猜很多人都是靠着”背“来记忆的,所以今天的这篇文章,讲给大家详细着讲解他们是如何通信的,让大家尽量能够理解他们之间的区别、优缺点等,这样的话,以后面试官让你举例子,你也能够顺手拈来。 1、管道 我们来看一条 Linux 的语句 netstat -tulnp | gr
20行Python代码爬取王者荣耀全英雄皮肤
引言 王者荣耀大家都玩过吧,没玩过的也应该听说过,作为时下最火的手机MOBA游戏,咳咳,好像跑题了。我们今天的重点是爬取王者荣耀所有英雄的所有皮肤,而且仅仅使用20行Python代码即可完成。 准备工作 爬取皮肤本身并不难,难点在于分析,我们首先得得到皮肤图片的url地址,话不多说,我们马上来到王者荣耀的官网: 我们点击英雄资料,然后随意地选择一位英雄,接着F12打开调试台,找到英雄原皮肤的图片
张小龙-年薪近3亿的微信之父,他是如何做到的?
张小龙生于湖南邵东魏家桥镇, 家庭主要特点:穷。 不仅自己穷,亲戚也都很穷,可以说穷以类聚。爷爷做过铜匠,总的来说,标准的劳动阶级出身。 家有兄弟两人, 一个小龙,一个小虎。 小虎好动,与邻里打成一片, 小龙好静,喜好读书。 “文静的像个妹子。”张小龙的表哥如是说。 穷文富武,做个读书郎是个不错的选择。 87年至94年, 华中科技大学本硕连读。 本科就读电信系, 不喜欢上课...
相关热词 c#处理浮点数 c# 生成字母数字随机数 c# 动态曲线 控件 c# oracle 开发 c#选择字体大小的控件 c# usb 批量传输 c#10进制转8进制 c#转base64 c# 科学计算 c#下拉列表获取串口
立即提问