Java创建表格

Java创建表格要利用JTable组件组件。

下面看看创建表格的具体步骤:

  1. 创建表格
  2. 获取表格的数据模型
  3. 对表格的数据模型操作
  4. 更新表格模型
  5. 将表格组件添加到JScrollPane面板上
  6. 为JScrollPane面板设置一个可视化图表
package cn.com;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class ArrayCreateTable extends JFrame
{
	private JTable table;
	
	public ArrayCreateTable()
	{
		init();
	}
	
	public void init()
	{
		//第一步:创建表格
		this.table = new JTable();
		
		//第二步:获取表格的数据模型
		DefaultTableModel model = (DefaultTableModel) this.table.getModel();
		
		//第三步:对表格的数据模型操作
		model.setColumnIdentifiers(new String[] {"列1" , "列2" , "列3"});//设置表头
		for(int i=0 ; i<10 ; i++)			//增加行
			model.addRow(new String[]{null , null , null});
		
		//第四步:更新表格模型
		this.table.setModel(model);
		
		//第五步:将表格组件添加到JScrollPane面板上
		JScrollPane cen_pan = new JScrollPane();
		
		//第六步:为JScrollPane面板设置一个可视化图表
		cen_pan.setViewportView(this.table);
		
		this.add(cen_pan);
		
		
		
		//设置窗口属性
		this.setSize(500 , 400);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setLocationRelativeTo(null);
		this.setResizable(false);
		this.setVisible(true);
		
	}
	
	public static void main(String args[])
	{
		new ArrayCreateTable();
	}

}

这样一来表格就制作完成了,看看效果:
在这里插入图片描述

下面来看看DefaultTableModel的构造函数:
在这里插入图片描述

下面再来看一个具体的例子:

package cn.com;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class ArrayCreateTable extends JFrame implements ActionListener
{
	//private JFrame frame;
	private JButton button1;
	private JButton button2;
	private JTable table;
	private DefaultTableModel table_mode;
	
	public ArrayCreateTable()
	{
		init();
	}
	
	@SuppressWarnings("deprecation")
	public void init()
	{
		this.button1 = new JButton("增加行");
		this.button2 = new JButton("删除行");
		
		
		Object[][] p = {
                { "1", 91, 1949, 1910 },
                { "2", 82,1969, 1510 },
                { "3", 47, 1957, 1040 },
                { "4", 61, 1957, 1180 },
                { "5",90, 1987, 1770 }, };
        String[] tab_title = { "姓名", "工号", "出生年月", "薪水" };
        
        //1
		this.table = new JTable();
		//2
        this.table_mode =(DefaultTableModel) this.table.getModel();
        //3
        this.table_mode.setColumnIdentifiers(tab_title);		//设置表头
        for (int i=0 ; i<tab_title.length ; i++)				//向表格添加数据
        	table_mode.addRow(p[i]);
       
    	//4
        this.table.setModel(table_mode); 		//更新表格
        
        //5
        JScrollPane scrollpane = new JScrollPane(this.table);	//中部面板
 	
		//6
        scrollpane.setViewportView(this.table);
        
        
        this.add(scrollpane);
		
		FlowLayout flowlayout = new FlowLayout();
		flowlayout.setHgap(40); 		//设置组件间的间隔为40
		JPanel nor_pan = new JPanel(flowlayout);
		this.button1.setPreferredSize(new Dimension(80,30));
		this.button2.setPreferredSize(new Dimension(80,30));
		nor_pan.add(this.button1 );
		nor_pan.add(this.button2);
		this.add(nor_pan , BorderLayout.NORTH);		//添加上部面板
		
		//添加监视器
		this.button1.addActionListener(this);
		this.button2.addActionListener(this);
		
		
		//设置窗口属性
		this.setTitle("表格视窗");
		this.setVisible(true);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setSize(500, 500);
		this.setLocationRelativeTo(null);
	}
	
	
	 public void actionPerformed(ActionEvent e) 
	 {
		 if  (e.getActionCommand().equals("增加行"))
			 this.table_mode.addRow(new Vector<String>());
		 if  (e.getActionCommand().equals("删除行"))
		 {
			 //获取选中行的行数
			 int numrow = 0;
			 numrow=this.table.getSelectedRows().length;
			 if (numrow == 0)
					JOptionPane.showMessageDialog(null, "请选择您要删除的行",null , JOptionPane.WARNING_MESSAGE);
			 for (int i=0;i<numrow;i++)
			 {
				//删除所选行;
				 this.table_mode.removeRow(this.table.getSelectedRow());
			}
				 
		 }
		 
			 
	 }
	public static void main(String args[])
	{
		new ArrayCreateTable();
	}

}

效果如下:
在这里插入图片描述

下面再来看看如何进行表格的删除和添加,这里以列为主:
这里就截取上面的代码片段:

//获取选中行的行数
			 int numrow = 0;
			 numrow=this.table.getSelectedRows().length;
			 if (numrow == 0)
					JOptionPane.showMessageDialog(null, "请选择您要删除的行",null , JOptionPane.WARNING_MESSAGE);
			 for (int i=0;i<numrow;i++)
			 {
				//删除所选行;
				 this.table_mode.removeRow(this.table.getSelectedRow());
			}
				 
  • 10
    点赞
  • 84
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Java中创建一个表格并将其作为邮件发送,您可以使用JavaMail API和Apache POI库。以下是一些基本步骤: 1. 使用Apache POI创建一个表格并填充数据。您可以使用HSSFWorkbook或XSSFWorkbook,具体取决于您要创建的表格类型。 2. 将表格保存在临时文件中。 3. 创建JavaMail会话和消息对象。 4. 将表格文件作为附件添加到邮件中。 5. 发送邮件。 以下是一些示例代码: ``` // 创建表格和填充数据 HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.createSheet("Sheet1"); // 添加表格数据 // 将表格保存在临时文件中 File tempFile = File.createTempFile("temp", ".xls"); FileOutputStream fos = new FileOutputStream(tempFile); workbook.write(fos); fos.close(); // 创建JavaMail会话和消息对象 Properties props = new Properties(); props.put("mail.smtp.host", "smtp.gmail.com"); props.put("mail.smtp.port", "587"); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.starttls.enable", "true"); Session session = Session.getInstance(props, new Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("your_email@gmail.com", "your_password"); } }); Message message = new MimeMessage(session); message.setFrom(new InternetAddress("your_email@gmail.com")); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("recipient_email@example.com")); message.setSubject("Table as attachment"); // 添加表格文件作为附件 MimeBodyPart attachmentPart = new MimeBodyPart(); attachmentPart.attachFile(tempFile); Multipart multipart = new MimeMultipart(); multipart.addBodyPart(attachmentPart); message.setContent(multipart); // 发送邮件 Transport.send(message); ``` 请注意,上述代码仅作为示例。您需要将其修改为适合您的需求的代码,并确保您的应用程序具有适当的权限来创建和发送电子邮件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值