精华内容
下载资源
问答
  • http://www.javaeye.com/topic/507427今天学习了Java中使用JFreeChart,POI,JXL绘制图表,操作excel表格问题,自己动手了写了些小demo,不足之处,请大家指正。谢谢。 ^_^完整的类文件在附件中。并附上一张截图=======...

    http://www.javaeye.com/topic/507427

    今天学习了Java中使用JFreeChart,POI,JXL绘制图表,操作excel表格问题,自己动手了写了些小demo,不足之处,请大家指正。谢谢。 ^_^

    完整的类文件在附件中。并附上一张截图

    ====================================

    代码『片段』

    ====================================

    Java代码

    /**

    * 根据数据设置图表的相关信息

    * @param categoryDataset

    * @return

    */

    publicstaticJFreeChart createJFreeChart(CategoryDataset categoryDataset) {

    /**

    * 设置图表的相关信息,其参数依次为:

    * 图表标题,纵坐标显示提示,横坐标显示提示,要显示的数据

    * 设置要显示图标柱状的横向或纵向.HORIZONTAL表示纵向,VERTICAL表示横向

    * 后面三个boolean型的参数:

    * 第一个表示是否显示柱状图例,true为显示,false为不显示

    */

    JFreeChart chart = ChartFactory.createBarChart("学生人数统计","省份","数量",

    categoryDataset, PlotOrientation.VERTICAL, true,true,false);

    // 设置背景颜色

    chart.setBackgroundPaint(Color.WHITE);

    CategoryPlot cateforyPlot = chart.getCategoryPlot();

    cateforyPlot.setBackgroundPaint(Color.WHITE);

    cateforyPlot.setDomainGridlinePaint(Color.WHITE);

    // 设置是否可见

    cateforyPlot.setDomainGridlinesVisible(true);

    // 设置柱状的颜色

    cateforyPlot.setRangeGridlinePaint(Color.BLUE);

    returnchart;

    }

    /**

    * 生成二维的柱状图

    * @param session 客户端当前session

    * @param out 输出流

    * @return 返回所生成图片的URL

    */

    publicstaticString getBarChartURL(HttpSession session, PrintWriter out) {

    String fileName = "";

    //调用静态的方法获取数据集

    CategoryDataset categoryDataset = getDataSet();

    //调用类中静态方法创建图表对象

    JFreeChart chart = createJFreeChart(categoryDataset);

    ChartRenderingInfo chartInfo = newChartRenderingInfo(

    newStandardEntityCollection());

    try{

    //将生成的图片以PNG文件格式显示

    fileName = ServletUtilities.saveChartAsPNG(chart, 500,300,

    chartInfo, session);

    } catch(IOException e) {

    e.printStackTrace();

    }

    try{

    //向客户端显示图片

    ChartUtilities.writeImageMap(out, fileName, chartInfo, true);

    } catch(IOException e) {

    e.printStackTrace();

    }

    out.flush();

    returnfileName;

    }

    /** * 根据数据设置图表的相关信息 * @param categoryDataset * @return */public static JFreeChart createJFreeChart(CategoryDataset categoryDataset) {/** * 设置图表的相关信息,其参数依次为: * 图表标题,纵坐标显示提示,横坐标显示提示,要显示的数据 * 设置要显示图标柱状的横向或纵向.HORIZONTAL表示纵向,VERTICAL表示横向 * 后面三个boolean型的参数: * 第一个表示是否显示柱状图例,true为显示,false为不显示 */JFreeChart chart = ChartFactory.createBarChart("学生人数统计", "省份", "数量",categoryDataset, PlotOrientation.VERTICAL, true, true, false);// 设置背景颜色chart.setBackgroundPaint(Color.WHITE);CategoryPlot cateforyPlot = chart.getCategoryPlot();cateforyPlot.setBackgroundPaint(Color.WHITE);cateforyPlot.setDomainGridlinePaint(Color.WHITE);// 设置是否可见cateforyPlot.setDomainGridlinesVisible(true);// 设置柱状的颜色cateforyPlot.setRangeGridlinePaint(Color.BLUE);return chart;}/** * 生成二维的柱状图 * @param session 客户端当前session * @param out 输出流 * @return 返回所生成图片的URL */public static String getBarChartURL(HttpSession session, PrintWriter out) {String fileName = "";//调用静态的方法获取数据集CategoryDataset categoryDataset = getDataSet();//调用类中静态方法创建图表对象JFreeChart chart = createJFreeChart(categoryDataset);ChartRenderingInfo chartInfo = new ChartRenderingInfo(new StandardEntityCollection());try {//将生成的图片以PNG文件格式显示fileName = ServletUtilities.saveChartAsPNG(chart, 500, 300,chartInfo, session);} catch (IOException e) {e.printStackTrace();}try {//向客户端显示图片ChartUtilities.writeImageMap(out, fileName, chartInfo, true);} catch (IOException e) {e.printStackTrace();}out.flush();return fileName;}

    66aa233e-2007-356f-8b58-b640392e3b5d.png

    展开全文
  • 编写一个IconTableRenderer渲染器类,代码如下所示:...import java.awt.Color;import java.awt.Component;import java.awt.Font;import javax.swing.ImageIcon;import javax.swing.JTable;import javax.swing.table...

    编写一个IconTableRenderer渲染器类,代码如下所示:

    package com.kraven;

    import java.awt.Color;

    import java.awt.Component;

    import java.awt.Font;

    import javax.swing.ImageIcon;

    import javax.swing.JTable;

    import javax.swing.table.DefaultTableCellRenderer;

    class IconTableRenderer extends DefaultTableCellRenderer

    {

    public IconTableRenderer(ImageIcon icon,Color foregroundColor,Color backgroundColor)

    {

    this.icon = icon;

    this.foregroundColor = foregroundColor;

    this.backgroundColor = backgroundColor;

    }

    public Component getTableCellRendererComponent(JTable table,

    Object value,

    boolean isSelected,

    boolean hasFocus,

    int row,

    int column)

    {

    setIcon(icon);

    setText(value.toString());

    if(isSelected)

    {

    setForeground(foregroundColor);

    setBackground(backgroundColor);

    }

    else

    {

    setForeground(table.getForeground());

    setBackground(table.getBackground());

    }

    return this;

    }

    private ImageIcon icon;

    private Color foregroundColor;

    private Color backgroundColor;

    }

    展开全文
  • 简单的JAVA表格制作

    2008-10-19 14:53:31
    利用JTABLE做简单的JAVA表格,package connect; import javax.swing.table.AbstractTableModel; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class complextable { public ...
  • 和树状物一样,表格在Swing相当的庞大和强大。它们最初有意被设计成以Java数据库连结(JDBC,在15章有介绍)为媒介的“网格”数据库接口,并且因此它们拥有的巨大的灵活性,使我们不再感到复杂。无疑,这是足以成为...

    和树状物一样,表格在Swing相当的庞大和强大。它们最初有意被设计成以Java数据库连结(JDBC,在15章有介绍)为媒介的“网格”数据库接口,并且因此它们拥有的巨大的灵活性,使我们不再感到复杂。无疑,这是足以成为成熟的电子数据表的基础条件而且可能为整本教程提供很好的根据。但是,如果我们理解这个的基础条件,它同样可能创建相关的简单的Jtable。

    JTable控制数据的显示方式,但TableModel控制它自己的数据。因此在我们创建JTable前,应先创建一个TableModel。我们可以全部地执行TableModel接口,但它通常从helper类的AbstractTableModel处简单地继承:

    //: Table.java

    // Simple demonstration of JTable

    package c13.swing;

    import java.awt.*;

    import java.awt.event.*;

    import javax.swing.*;

    import javax.swing.table.*;

    import javax.swing.event.*;

    // The TableModel controls all the data:

    class DataModel extends AbstractTableModel {

    Object[][] data = {

    {"one", "two", "three", "four"},

    {"five", "six", "seven", "eight"},

    {"nine", "ten", "eleven", "twelve"},

    };

    // Prints data when table changes:

    class TML implements TableModelListener {

    public void tableChanged(TableModelEvent e) {

    for(int i = 0; i < data.length; i++) {

    for(int j = 0; j < data[0].length; j++)

    System.out.print(data[i][j] + " ");

    System.out.println();

    }

    }

    }

    DataModel() {

    addTableModelListener(new TML());

    }

    public int getColumnCount() {

    return data[0].length;

    }

    public int getRowCount() {

    return data.length;

    }

    public Object getValueAt(int row, int col) {

    return data[row][col];

    }

    public void

    setValueAt(Object val, int row, int col) {

    data[row][col] = val;

    // Indicate the change has happened:

    fireTableDataChanged();

    }

    public boolean

    isCellEditable(int row, int col) {

    return true;

    }

    };

    public class Table extends JPanel {

    public Table() {

    setLayout(new BorderLayout());

    JTable table = new JTable(new DataModel());

    JScrollPane scrollpane =

    JTable.createScrollPaneForTable(table);

    add(scrollpane, BorderLayout.CENTER);

    }

    public static void main(String args[]) {

    Show.inFrame(new Table(),200,200);

    }

    } ///:~

    DateModel包括一组数据,但我们同样能从其它的地方得到数据,例如从数据库中。构建器增加了一个TableModelListener用来在每次表格被改变后打印数组。剩下的方法都遵循Bean的命名规则,并且当JTable需要在DateModel中显示信息时调用。AbstractTableModel提供了默认的setValueAt()和isCellEditable()方法以防止修改这些数据,因此如果我们想修改这些数据,就必须过载这些方法。

    一旦我们拥有一个TableModel,我们只需要将它分配给JTable构建器即可。所有有关显示,编辑和更新的详细资料将为我们处理。注意这个程序例子同样将JTable放置在JScrollPane中,这是因为JScrollPane需要一个特殊的JTable方法。

    展开全文
  • Swing 使用 JTable详解示例 1 : 基本表格显示一个Table需要两组数据一维数组: String[]columnNames 表示表格的标题二维数组: String[][] heros 表格中的内容默认情况下,表格的标题是不会显示出来了,除非使用了...

    Swing 使用 JTable详解

    示例 1 : 基本表格

    显示一个Table需要两组数据

    一维数组: String[]columnNames 表示表格的标题

    二维数组: String[][] heros 表格中的内容

    默认情况下,表格的标题是不会显示出来了,除非使用了JScrollPane

    a4c9c7f2853f

    基本表格

    package gui;

    import java.awt.BorderLayout;

    import javax.swing.JFrame;

    import javax.swing.JTable;

    public class TestGUI {

    public static void main(String[] args) {

    JFrame f = new JFrame("LoL");

    f.setSize(400, 300);

    f.setLocation(200, 200);

    f.setLayout(new BorderLayout());

    // 表格上的title

    String[] columnNames = new String[] { "id", "name", "hp", "damage" };

    // 表格中的内容,是一个二维数组

    String[][] heros = new String[][] { { "1", "盖伦", "616", "100" },

    { "2", "提莫", "512", "102" }, { "3", "奎因", "832", "200" } };

    JTable t = new JTable(heros, columnNames);

    f.add(t, BorderLayout.CENTER);

    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    f.setVisible(true);

    }

    }

    示例 2 : JScrollPane

    JScrollPane: 带滚动条的Panel

    把table放进去就可以看到table的title

    同样的把textarea放进去,并且textarea内容够长的话,就会看到滚动条

    a4c9c7f2853f

    JScrollPane

    package gui;

    import java.awt.BorderLayout;

    import javax.swing.JFrame;

    import javax.swing.JScrollPane;

    import javax.swing.JTable;

    public class TestGUI {

    public static void main(String[] args) {

    JFrame f = new JFrame("LoL");

    f.setSize(400, 300);

    f.setLocation(200, 200);

    f.setLayout(new BorderLayout());

    String[] columnNames = new String[] { "id", "name", "hp", "damage" };

    String[][] heros = new String[][] { { "1", "盖伦", "616", "100" },

    { "2", "提莫", "512", "102" }, { "3", "奎因", "832", "200" } };

    JTable t = new JTable(heros, columnNames);

    // 根据t创建 JScrollPane

    JScrollPane sp = new JScrollPane(t);

    //或则创建一个空的JScrollPane,再通过setViewportView把table放在JScrollPane中

    // JScrollPane sp = new JScrollPane(t);

    // sp.setViewportView(t);

    // 把sp而非JTable加入到JFrame上,

    f.add(sp, BorderLayout.CENTER);

    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    f.setVisible(true);

    }

    }

    示例 3 : 列宽

    设置列宽度

    a4c9c7f2853f

    列宽

    package gui;

    import java.awt.BorderLayout;

    import javax.swing.JFrame;

    import javax.swing.JScrollPane;

    import javax.swing.JTable;

    public class TestGUI {

    public static void main(String[] args) {

    JFrame f = new JFrame("LoL");

    f.setSize(400, 300);

    f.setLocation(200, 200);

    f.setLayout(new BorderLayout());

    String[] columnNames = new String[] { "id", "name", "hp", "damage" };

    String[][] heros = new String[][] { { "1", "盖伦", "616", "100" },

    { "2", "提莫", "512", "102" }, { "3", "奎因", "832", "200" } };

    JTable t = new JTable(heros, columnNames);

    JScrollPane sp = new JScrollPane(t);

    // 设置列宽度

    t.getColumnModel().getColumn(0).setPreferredWidth(10);

    f.add(sp, BorderLayout.CENTER);

    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    f.setVisible(true);

    }

    }

    示例 4 : TableModel

    首先说下TableModel的设计思想,在Model这种思想的指导下,数据和显示分离开来了。 比如对于JTable而言,有数据部分,也有显示部分(比如列宽等信息)。 数据部分,专门做一个类,叫做TableModel,就用于存放要显示的数据。

    使用TableModel的方式存放Table需要显示的数据

    HeroTableModel 继承AbstractTableModel ,进而实现了接口TableModel

    在HeroTableModel 中提供一个table显示需要的所有信息

    getRowCount 返回一共有多少行

    getColumnCount 返回一共有多少列

    getColumnName 每一列的名字

    isCellEditable 单元格是否可以修改

    getValueAt 每一个单元格里的值

    当图形界面需要渲染第一个单元格的数据的时候,就会调用方法TabelModel的getValueAt(0,0) ,把返回值拿到并显示

    package gui;

    import javax.swing.table.AbstractTableModel;

    public class HeroTableModel extends AbstractTableModel {

    String[] columnNames = new String[] { "id", "name", "hp", "damage" };

    String[][] heros = new String[][] { { "1", "盖伦", "616", "100" },

    { "2", "提莫", "512", "102" }, { "3", "奎因", "832", "200" } };

    // 返回一共有多少行

    public int getRowCount() {

    // TODO Auto-generated method stub

    return heros.length;

    }

    // 返回一共有多少列

    public int getColumnCount() {

    // TODO Auto-generated method stub

    return columnNames.length;

    }

    // 获取每一列的名称

    public String getColumnName(int columnIndex) {

    // TODO Auto-generated method stub

    return columnNames[columnIndex];

    }

    // 单元格是否可以修改

    public boolean isCellEditable(int rowIndex, int columnIndex) {

    return false;

    }

    // 每一个单元格里的值

    public Object getValueAt(int rowIndex, int columnIndex) {

    // TODO Auto-generated method stub

    return heros[rowIndex][columnIndex];

    }

    }

    .

    package gui;

    import java.awt.BorderLayout;

    import javax.swing.JFrame;

    import javax.swing.JScrollPane;

    import javax.swing.JTable;

    public class TestGUI {

    public static void main(String[] args) {

    JFrame f = new JFrame("LoL");

    f.setSize(400, 300);

    f.setLocation(200, 200);

    f.setLayout(new BorderLayout());

    //创建一个TableModel

    HeroTableModel htm= new HeroTableModel();

    //根据 TableModel来创建 Table

    JTable t = new JTable(htm);

    JScrollPane sp = new JScrollPane(t);

    f.add(sp, BorderLayout.CENTER);

    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    f.setVisible(true);

    }

    }

    示例 5 : 进一步理解TableModel

    在使用TableModel之前,是使用

    String[] columnNames =。。。

    String[][] heros = 。。。

    JTable t = new JTable(heros, columnNames);

    这样的风格创建一个JTable的

    所以实际上调用的是如下的构造方法:

    JTable(Object[][] rowData, Object[] columnNames)

    如图所示,在JTable的的源代码中,它就会根据rowData和columnNames去创建一个TableModel对象

    a4c9c7f2853f

    进一步理解TableModel

    示例 6 : TableModel 与DAO结合

    通过TableModel与DAO结合显示数据库中Hero信息。

    DAO使用HeroDAO

    在TableModel中,使用从DAO返回的List作为TableModel的数据

    只需要修改HeroTableModel,无需修改TestGUI。 这正好演绎了Model设计思想中的数据分离的好处,当只需要数据发生变化的时候,修改Model即可,界面GUI部分,不需要做任何改动

    a4c9c7f2853f

    TableModel 与DAO结合

    package gui;

    import java.util.List;

    import javax.swing.table.AbstractTableModel;

    import jdbc.HeroDAO;

    import charactor.Hero;

    public class HeroTableModel extends AbstractTableModel {

    String[] columnNames = new String[] { "id", "name", "hp", "damage" };

    // 使用从DAO返回的List作为TableModel的数据

    public List heros = new HeroDAO().list();

    // heros.size返回一共有多少行

    public int getRowCount() {

    // TODO Auto-generated method stub

    return heros.size();

    }

    public int getColumnCount() {

    // TODO Auto-generated method stub

    return columnNames.length;

    }

    public String getColumnName(int columnIndex) {

    // TODO Auto-generated method stub

    return columnNames[columnIndex];

    }

    public boolean isCellEditable(int rowIndex, int columnIndex) {

    return false;

    }

    // 先通过heros.get(rowIndex)获取行对应的Hero对象

    // 然后根据columnIndex返回对应的属性

    public Object getValueAt(int rowIndex, int columnIndex) {

    Hero h = heros.get(rowIndex);

    if (0 == columnIndex)

    return h.id;

    if (1 == columnIndex)

    return h.name;

    if (2 == columnIndex)

    return h.hp;

    if (3 == columnIndex)

    return h.damage;

    return null;

    }

    }

    示例 7 : TableSelectionModel

    通过table可以获取一个 TableSelectionModel,专门用于监听jtable选中项的变化

    a4c9c7f2853f

    TableSelectionModel

    package gui;

    import java.awt.BorderLayout;

    import javax.swing.JFrame;

    import javax.swing.JLabel;

    import javax.swing.JPanel;

    import javax.swing.JScrollPane;

    import javax.swing.JTable;

    import javax.swing.event.ListSelectionEvent;

    import javax.swing.event.ListSelectionListener;

    import charactor.Hero;

    public class TestGUI {

    public static void main(String[] args) {

    JFrame f = new JFrame("LoL");

    f.setSize(400, 300);

    f.setLocation(200, 200);

    f.setLayout(new BorderLayout());

    final HeroTableModel htm = new HeroTableModel();

    final JTable t = new JTable(htm);

    // 准备一个Panel上面放一个Label用于显示哪条被选中了

    JPanel p = new JPanel();

    final JLabel l = new JLabel("暂时未选中条目");

    p.add(l);

    JScrollPane sp = new JScrollPane(t);

    // 使用selection监听器来监听table的哪个条目被选中

    t.getSelectionModel().addListSelectionListener(

    new ListSelectionListener() {

    // 当选择了某一行的时候触发该事件

    public void valueChanged(ListSelectionEvent e) {

    // 获取哪一行被选中了

    int row = t.getSelectedRow();

    // 根据选中的行,到HeroTableModel中获取对应的对象

    Hero h = htm.heros.get(row);

    // 更新标签内容

    l.setText("当前选中的英雄是: " + h.name);

    }

    });

    f.add(p, BorderLayout.NORTH);

    f.add(sp, BorderLayout.CENTER);

    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    f.setVisible(true);

    }

    }

    示例 8 : 更新Table

    以新增数据到数据库中,然后更新Table为例

    a4c9c7f2853f

    在这里插入图片描述

    package gui;

    import java.awt.BorderLayout;

    import java.awt.Dimension;

    import java.awt.event.ActionEvent;

    import java.awt.event.ActionListener;

    import javax.swing.JButton;

    import javax.swing.JFrame;

    import javax.swing.JLabel;

    import javax.swing.JPanel;

    import javax.swing.JScrollPane;

    import javax.swing.JTable;

    import javax.swing.JTextField;

    import jdbc.HeroDAO;

    import charactor.Hero;

    public class TestGUI {

    public static void main(String[] args) {

    JFrame f = new JFrame("LoL");

    f.setSize(400, 300);

    f.setLocation(200, 200);

    f.setLayout(new BorderLayout());

    final HeroTableModel htm = new HeroTableModel();

    final JTable t = new JTable(htm);

    // 增加 一个 panel用于放置名称,血量输入框和增加 按钮

    JPanel p = new JPanel();

    final JLabel lName = new JLabel("名称");

    final JTextField tfName = new JTextField("");

    final JLabel lHp = new JLabel("血量");

    final JTextField tfHp = new JTextField("");

    JButton bAdd = new JButton("增加");

    tfName.setPreferredSize(new Dimension(80, 30));

    tfHp.setPreferredSize(new Dimension(80, 30));

    p.add(lName);

    p.add(tfName);

    p.add(lHp);

    p.add(tfHp);

    p.add(bAdd);

    // 为增加按钮添加监听

    bAdd.addActionListener(new ActionListener() {

    @Override

    public void actionPerformed(ActionEvent e) {

    HeroDAO dao = new HeroDAO();

    // 根据输入框数据创建一个Hero对象

    Hero h = new Hero();

    h.name = tfName.getText();

    h.hp = Integer.parseInt(tfHp.getText());

    // 通过dao把该对象加入到数据库

    dao.add(h);

    // 通过dao更新tablemodel中的数据

    htm.heros = dao.list();

    // 调用JTable的updateUI,刷新界面。

    // 刷新界面的时候,会到tablemodel中去取最新的数据

    // 就能看到新加进去的数据了

    t.updateUI();

    }

    });

    JScrollPane sp = new JScrollPane(t);

    f.add(p, BorderLayout.NORTH);

    f.add(sp, BorderLayout.CENTER);

    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    f.setVisible(true);

    }

    }

    示例 9 : 输入项验证

    如果用户输入的名称为空,或者血量不是小数,在提交数据的时候都会报错。

    “感觉上” 界面就卡住了。 这是不友好的人机交互行为。

    所以需要加上输入项的验证,如果输入的数据不合格,应该弹出对话框提示用户具体原因。

    a4c9c7f2853f

    输入项验证

    package gui;

    import java.awt.BorderLayout;

    import java.awt.Dimension;

    import java.awt.event.ActionEvent;

    import java.awt.event.ActionListener;

    import javax.swing.JButton;

    import javax.swing.JFrame;

    import javax.swing.JLabel;

    import javax.swing.JOptionPane;

    import javax.swing.JPanel;

    import javax.swing.JScrollPane;

    import javax.swing.JTable;

    import javax.swing.JTextField;

    import jdbc.HeroDAO;

    import charactor.Hero;

    public class TestGUI {

    public static void main(String[] args) {

    final JFrame f = new JFrame("LoL");

    f.setSize(400, 300);

    f.setLocation(200, 200);

    f.setLayout(new BorderLayout());

    final HeroTableModel htm = new HeroTableModel();

    final JTable t = new JTable(htm);

    JPanel p = new JPanel();

    final JLabel lName = new JLabel("名称");

    final JTextField tfName = new JTextField("");

    final JLabel lHp = new JLabel("血量");

    final JTextField tfHp = new JTextField("");

    JButton bAdd = new JButton("增加");

    tfName.setPreferredSize(new Dimension(80, 30));

    tfHp.setPreferredSize(new Dimension(80, 30));

    p.add(lName);

    p.add(tfName);

    p.add(lHp);

    p.add(tfHp);

    p.add(bAdd);

    bAdd.addActionListener(new ActionListener() {

    @Override

    public void actionPerformed(ActionEvent e) {

    HeroDAO dao = new HeroDAO();

    Hero h = new Hero();

    String name = tfName.getText();

    // 通过name长度判断 名称是否为空

    if (name.length() == 0) {

    // 弹出对话框提示用户

    JOptionPane.showMessageDialog(f, "名称不能为空");

    // 名称输入框获取焦点

    tfName.grabFocus();

    return;

    }

    String hp = tfHp.getText().trim();

    try {

    // 把hp转换为浮点型,如果出现异常NumberFormatException表示不是浮点型格式

    Float.parseFloat(hp);

    } catch (NumberFormatException e1) {

    JOptionPane.showMessageDialog(f, "血量只能是小数 ");

    tfHp.grabFocus();

    return;

    }

    h.name = name;

    h.hp = Float.parseFloat(hp);

    dao.add(h);

    htm.heros = dao.list();

    t.updateUI();

    }

    });

    JScrollPane sp = new JScrollPane(t);

    f.add(p, BorderLayout.NORTH);

    f.add(sp, BorderLayout.CENTER);

    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    f.setVisible(true);

    }

    }

    示例 10 : 选中指定行

    table初始化后,应该默认选中第一行

    增加数据后,也应该选中新增的这一条

    a4c9c7f2853f

    选中指定行

    package gui;

    import java.awt.BorderLayout;

    import java.awt.Dimension;

    import java.awt.event.ActionEvent;

    import java.awt.event.ActionListener;

    import javax.swing.JButton;

    import javax.swing.JFrame;

    import javax.swing.JLabel;

    import javax.swing.JOptionPane;

    import javax.swing.JPanel;

    import javax.swing.JScrollPane;

    import javax.swing.JTable;

    import javax.swing.JTextField;

    import javax.swing.ListSelectionModel;

    import jdbc.HeroDAO;

    import charactor.Hero;

    public class TestGUI {

    public static void main(String[] args) {

    final JFrame f = new JFrame("LoL");

    f.setSize(400, 300);

    f.setLocation(200, 200);

    f.setLayout(new BorderLayout());

    final HeroTableModel htm = new HeroTableModel();

    final JTable t = new JTable(htm);

    // 设置选择模式为 只能选中一行

    t.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

    // 选中第一行 (基本0)

    t.getSelectionModel().setSelectionInterval(0, 0);

    JPanel p = new JPanel();

    final JLabel lName = new JLabel("名称");

    final JTextField tfName = new JTextField("");

    final JLabel lHp = new JLabel("血量");

    final JTextField tfHp = new JTextField("");

    JButton bAdd = new JButton("增加");

    tfName.setPreferredSize(new Dimension(80, 30));

    tfHp.setPreferredSize(new Dimension(80, 30));

    p.add(lName);

    p.add(tfName);

    p.add(lHp);

    p.add(tfHp);

    p.add(bAdd);

    bAdd.addActionListener(new ActionListener() {

    @Override

    public void actionPerformed(ActionEvent e) {

    HeroDAO dao = new HeroDAO();

    Hero h = new Hero();

    String name = tfName.getText();

    if (name.length() == 0) {

    JOptionPane.showMessageDialog(f, "名称不能为空");

    tfName.grabFocus();

    return;

    }

    String hp = tfHp.getText().trim();

    try {

    Float.parseFloat(hp);

    } catch (NumberFormatException e1) {

    JOptionPane.showMessageDialog(f, "血量只能是小数 ");

    tfHp.grabFocus();

    return;

    }

    h.name = name;

    h.hp = Float.parseFloat(hp);

    dao.add(h);

    htm.heros = dao.list();

    t.updateUI();

    // 选中 第一行 ,因为 DAO是按照 ID倒排序查询,所以第一行就是新加入的数据

    t.getSelectionModel().setSelectionInterval(0, 0);

    }

    });

    JScrollPane sp = new JScrollPane(t);

    f.add(p, BorderLayout.NORTH);

    f.add(sp, BorderLayout.CENTER);

    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    f.setVisible(true);

    }

    }

    展开全文
  • 大家都知道微信小程序自身没有提供表格这个组件,但是今天的项目需求又出现了,所以只能模仿一个了。效果图:代码挺简单方便的:wxml:日期时间伤害2018/02/1211:30本次对海煞造成了100000点伤害wxss:.history-table-...
  • Java如何制作表格的word文档

    千次阅读 2020-08-05 17:44:10
    设置和添加表格有关操作 写在最前 首先您需要导入WordGo的jar包或者写上maven仓库的坐标,最新版直接去git下载就好:https://github.com/qrpcode/wordgo/blob/master/README_CN.md 表格计算行列时,全部和我们平时...
  • public class JavaPrint {public static void main(String[] args) {// 定义报表运行环境,才能执行报表String envPath = "D:\\FineReport\\develop\\code\\build\\package\\WebReport\\WEB-INF";FRContext....
  • 满意答案yorkfee2013.09.30采纳率:45%等级:11已帮助:9083人使用javascript动态创建表格tablefunction CreateTable(disposeCount,resolveCount,remainCount){//创建表格var oTable = document.createElement(...
  • 如何用JAVA制作一个漂亮的表格

    千次阅读 2019-04-18 15:34:30
    如何用JAVA制作一个漂亮的表格 表格图片: 选中一行时高亮显示,且字体变为红色: 在表格中添加数据: 代码如下: import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import ...
  • public class _8_TableDemo表格组件 { public static void main(String[] args) { // TODO Auto-generated method stub new MyTable(); } } class MyTable extends JFrame{ JTable table; ...
  • <!DOCTYPEhtml> <htmllang="en"> <head> <metacharset="UTF-8"> <metaname="viewport"content="width=device-width,initial-scale=1.0"> <title>...script...
  • 作业一document.write("")document.write("考试名称")document.write("姓名证件类别")document.write("性别证件号码")document.write("出生年月政治面貌")document.write("户籍所在地籍贯")document.write("学历类型...
  • 请各位高手帮个忙,题目要求用java语言并且要用到publicstaticdoublefootToMeter(doublefoot)和publicstaticdoublemeterToFoot(doublemeter)这两个方法显示出一个表格如下:(题目已给...请各位高手帮个忙,题目要求...
  • java制作文本框中的表格输入List数据

    千次阅读 2019-03-05 17:05:16
    最近在做一个Java的单机程序,所以用了下JFrame用来做Java自己的页面,这是写的一个向JTable输入List类型的数据, import javax.swing.table.AbstractTableModel; import java.util.ArrayList; import java.util....
  • 可编辑的 HTML JavaScri... 11页 1下载券 Web表格控件 6页 免费 制作VC表格控件 4页 1下载券 MFC控件 99页 1下载券 ActiveX控件发布过程 21页 免费......泰州电信案例泰州电信内部正是由于上述反应不及时的问题,业务...
  • 如你所见,PdfPTable不是't have borders, probably because PDF'首先没有表格 . 将边框直接放在PdfPCell上可能更有意义(尽管PDF也不支持这些) . 无论如何,表只是一个单元的集合,所以让他们处理它 .无论如何,解决...
  • import java.awt.*;import java.awt.event.*;import javax.swing.event.*;public class test2{public test2(){JFrame f=new JFrame();Object[][] playerInfo=new Object[2][2];String[] Names=...
  • 说明:在controller层吧需要的数据拿到,通过service中封装的方法组合成表格进行下载到本地。 service层: 这里吧相关的依赖包写出来,注意不要导错,其中合并单元格的方法已在代码中写明注释,实在不明白的同学...
  • //定义表格的列名称 String comm[][] = new String[row][4];//row行,4列 res.next();//游标回到第一个记录的位置 for(int i=0;i;i++) { comm[i][0]=res.getString("姓名"); comm[i][1]=res.getString("专业...
  • 表格布局(TableLayout)1.可以在行中间添加单元格android:layout_span="2" //占多少列layout_spanandroid:layout_column="2" //layout_column指明在索引为2的列数android:stretchColumns="1" //stretchColumns扩展...
  • 简介通过本文及配套示例源码你可以更加灵活的控制Excel表格文件,其中包括创建新Excel文件、写入表格数据、读取表格数据(包括对原建Excel文件自已手工添加的行、列数据的准确读取),删除已有Excel表格,对表格中指定...
  • 在学习了黑马毕向东老师的java基础时,操作文件即IO的操作,我就想了一下,java是否可以操作excel表格。研究了一下。 /**  * 2015.9.21  *POI 生成 Excel 文件  */ package PoiExcel; import java.io.*; import...
  • Java制作Excel

    2017-12-07 15:56:22
    jxl.jar包应用于Java语言的Excel表格制作,导入即可使用
  • 本文章将向读者展示怎样通过Java...关于报表的制作请查看《第一个JasperReport项目HelloWorld》文章。下面是实现java代码:packagecom.huangx;importjava.io.ByteArrayInputStream;importjava.util.HashMap;importj...
  • 因此在制作PPT过程中,利用表格将有力的数据表示出来,不仅可以提升整个PPT的质量,同时也能够向观众直观地阐述观点,更具说服力。本文将通过使用Java程序来演示如何在PPT中创建、删除和操作表格。Jar文件获取及导入...
  • 最近利用空闲时间自己琢磨了一下java swing 编程,其实在从事javaweb之前我一直向往的就是java swing 开发,不知道为什么可能当时觉得Windows上的exe程序很是神奇,关于windows上制作exe我之前也有介绍java swing...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 478
精华内容 191
关键字:

java表格制作

java 订阅