javajtabel的简单介绍
今天给各位分享javajtabel的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、Java中如何用数组设置JTable表格的列名与列宽
- 2、java 怎么对jTable表格赋值
- 3、JAVA如何实现jtable 表头实现类似Excel筛选功能
- 4、java JTable中如何添加一行数据?
- 5、java Jtable 如何动态添加button按钮
- 6、JAVA 中 JTable 如何 删除或重写
Java中如何用数组设置JTable表格的列名与列宽
1.在项目中创建窗体类ArrayCreateTable。在窗体中添加一个滚动面板。
2.编写getTable()方法来创建表格,在该方法中声明字符串数组columns作为表格的列名,再声明int类型的数组来定义每个表格列的宽度。然后创建表格的数据模型并遍历所有表格列对象,根据int类型数组的索引来设置表格列的宽度。
代码如下:
private JTable getTable() {
if (table == null) {
table = new JTable();
// 定义列名数组
String[] columns = { "星期一", "星期二", "星期三", "星期四", "星期五", "星期六",
"星期日" };
// 定义列宽数组
int[] columnWidth = { 10, 20, 30, 40, 50, 60, 70 };
// 创建表格数据模型
DefaultTableModel model = new DefaultTableModel(columns, 15);
table.setModel(model);// 设置表格数据模型
TableColumnModel columnModel = table.getColumnModel();// 获取列模型
int count = columnModel.getColumnCount();// 获取列数量
for (int i = 0; i count; i++) {// 遍历列
TableColumn column = columnModel.getColumn(i);// 获取列对象
column.setPreferredWidth(columnWidth[i]);// 以数组元素设置列的宽度
}
}
return table;
}
java 怎么对jTable表格赋值
有两个方法。
1、自定义渲染器,自己添加。(或是用JDK已有的渲染器也可以)
2、重写TableModel的getColumnClass
参考实例如下:
public class Test {
public static void main(String[] args) {
String[][] cells = new String[6][7];
String add = "1";//已经存在的变量
int addValue = Integer.parseInt(add);//需要定义的中间变量
for (int rowIndex = 0; rowIndex = 5; rowIndex++) {
for (int columnIndex = 0; columnIndex = 6; columnIndex++) {
cells[rowIndex][columnIndex] = String.valueOf(addValue++) ;//赋值过程
System.out.print(cells[rowIndex][columnIndex]+",");
}
System.out.println("");
}
}
JAVA如何实现jtable 表头实现类似Excel筛选功能
用java的JTable实现类似Excel的报表控件主要需要完成的工作如下:
1. 单元格合并与拆分。
2. 基于JTextArea的渲染器,用来实现多行输入。
3. 由于采用JTextArea作为渲染器,导致文本只能向左对齐,后来通过重载JTextArea得以实现居中,居右,字体下划线等效果:)。
4. 鼠标动态拉行高,拉行宽。
5. 发现行数一多,导致性能下降很历害,所以实现了只刷新当前可视屏幕区域。
6. 单元格属性的设定:背景颜色、前景颜色、字体(大小,粗斜体,下划线,删除线)、对角线单元格(中国式报表)、边框线等
7. 打印预览
8. 打印
9. 自己实现的打印设置对话框(打印水印、打印方向、纸张页边距、打印纸张页数范围、打印顺序、设定打印的页眉和页脚、放大打印或缩小打印)
10.往单元格加载图片,可预览和打印出来
11.套打模式,在table显示标尺,并重置行高为1cm,行宽为2cm,以方便使用者对应套打纸张
12.为单元格绘制边线
13.查找和替换
14.增加行和列,删除行和列
15.格式刷
16.排序,升和降。可设定优先排序的形式,数值优先或着是中文优先,中文按照拼音排序
17.考贝,复制和贴粘
18.插入图表,目前只实现了柱状图表
19.求和
20.各种热键组合
21.显示和隐藏table网格线
Java实现jtable 表头实现类似Excel筛选功能,你可以采取以上步骤进行总结,希望你早日得到答案。
java JTable中如何添加一行数据?
可以使用Swing的DefaultTableModel类。\x0d\x0aDefaultTableModel model = new DefaultTableModel(); // 新建一个默认数据模型\x0d\x0aJTablt table = new JTable(model); // 用数据模型创建JTable,JTable会自动监听到数据模型中的数据改变并显示出来\x0d\x0aJScrollPane jsp = new JScrollPane(table); // 用列表创建可滚动的Panel,把这个Panel添加到窗口中\x0d\x0aVector row = new Vector(); // 数据行向量,使用它的add()添加元素,比如整数、String、Object等,有几行就new几个行向量\x0d\x0aVector data = new Vector(); // 数据行向量集,因为列表不止一行,往里面添加数据行向量,添加方法add(row)\x0d\x0aVector names = new Vector();// 列名向量,使用它的add()方法添加列名\x0d\x0amodel.setDataVector(Vector data, Vector names); // 设置模型中的元素,它会自动显示在列表中
java Jtable 如何动态添加button按钮
有时候我们需要在JTable中嵌入JButton,使得点击某个JTable单元格时,用户感觉通过JButton触发了响应事件。下面我们看看为JTable单元格添加按钮效果和响应事件的方法。以下示例实现的效果为:点击jtable中的button,button上的数字自动加1,并将加1后得到的数字正确显示在button上。
一、添加按钮显示效果
JTable中,单元格的数据显示默认是JTable的效果。如果我们想要按钮显示的效果的话,需要实现swing接口:javax.swing.table.TableCellRenderer,来改变单元格默认的渲染方法。
package TableButton;
import java.awt.BorderLayout;
import java.awt.Component;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;
public class MyButtonRenderer implements TableCellRenderer {
private JPanel panel;
private JButton button;
private int num;
public MyButtonRenderer() {
initButton();
initPanel();
panel.add(button, BorderLayout.CENTER);
}
private void initButton() {
button = new JButton();
}
private void initPanel() {
panel = new JPanel();
panel.setLayout(new BorderLayout());
}
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
num = (Integer) value;
button.setText(value == null ? "" : String.valueOf(value));
return panel;
}
}
二、添加按钮响应事件
第1步中我们为表格添加了渲染器,但是渲染器只负责显示效果,要想点击”按钮“之后有响应,还得跟单元格的编辑器有关。点击表格是会触发表格的编辑时间,所以我们按钮的响应事件可以写在编辑器中,我们需要修改表格的默认编辑器实现。
swing中有个类javax.swing.DefaultCellEditor提供对单元格内插入JTextField/JComboBox/JCheckbox这3种控件,但是不提供对JButton的支持(1.7里不支持,不代表以后不会支持),所以我们得用到另外一个类自己写TableCellEditor,这个类是avax.swing.AbstractCellEditor。
package TableButton;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.AbstractCellEditor;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.table.TableCellEditor;
public class MyButtonEditor extends AbstractCellEditor implements
TableCellEditor {
/**
* serialVersionUID
*/
private static final long serialVersionUID = -6546334664166791132L;
private JPanel panel;
private JButton button;
private int num;
public MyButtonEditor() {
initButton();
initPanel();
panel.add(this.button, BorderLayout.CENTER);
}
private void initButton() {
button = new JButton();
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int res = JOptionPane.showConfirmDialog(null,
"Do you want to add 1 to it?", "choose one",
JOptionPane.YES_NO_OPTION);
if(res == JOptionPane.YES_OPTION){
num++;
}
//stopped!!!!
fireEditingStopped();
}
});
}
private void initPanel() {
panel = new JPanel();
panel.setLayout(new BorderLayout());
}
@Override
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected, int row, int column) {
num = (Integer) value;
button.setText(value == null ? "" : String.valueOf(value));
return panel;
}
@Override
public Object getCellEditorValue() {
return num;
}
}
需要注意的是得重写TableModel的isCellEditable方法,因为只有为重写Editor的列开启了可编辑功能,单元格才能被编辑,也就才能出发按钮单击事件。在下一段代码中有体现。
另外要注意得禁止掉JTable的行选中功能。否则我们再点击按钮时,JTable不知道是响应为”行选中“还是”按钮单击事件“。
三、测试代码
package TableButton;
import java.awt.Color;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
public class TestTable {
private JFrame frame;
private JTable table;
private Object[][] data = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}};
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
TestTable window = new TestTable();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public TestTable() {
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
JPanel panel = new JPanel();
panel.setBounds(10, 10, 414, 242);
frame.getContentPane().add(panel);
panel.setLayout(null);
JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(10, 10, 394, 222);
panel.add(scrollPane);
table = new JTable();
scrollPane.setViewportView(table);
table.setModel(new DefaultTableModel() {
@Override
public Object getValueAt(int row, int column) {
return data[row][column];
}
@Override
public int getRowCount() {
return 3;
}
@Override
public int getColumnCount() {
return 3;
}
@Override
public void setValueAt(Object aValue, int row, int column){
data[row][column] = aValue;
fireTableCellUpdated(row, column);
}
@Override
public boolean isCellEditable(int row, int column) {
if (column == 2) {
return true;
} else {
return false;
}
}
});
table.getColumnModel().getColumn(2).setCellEditor(
new MyButtonEditor());
table.getColumnModel().getColumn(2).setCellRenderer(
new MyButtonRenderer());
table.setRowSelectionAllowed(false);
}
}
JAVA 中 JTable 如何 删除或重写
给你代码,一秒钟更新一次。
import java.awt.BorderLayout;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
public class Test extends JFrame implements Runnable {
private DefaultTableModel model = new DefaultTableModel(
new String[] { "number" }, 0);
public Test() {
JTable table = new JTable(model);
JScrollPane pane = new JScrollPane(table);
add(pane, BorderLayout.CENTER);
setSize(800, 600);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
new Thread(this).start();
}
public static void main(String[] args) {
new Test();
}
public void run() {
Random random = new Random();
while (true) {
while (model.getRowCount() 0) {
model.removeRow(0);
}
int r = random.nextInt(20);
for (int i = 0; i r; i++) {
model.addRow(new String[] { random() });
}
try {
repaint();
Thread.sleep(1000);
} catch (Exception e) {
}
}
}
private String random() {
String str = "QWERTYUIOPASDFGHJKLZXCVBNM";
Random random = new Random();
StringBuffer buff = new StringBuffer();
for (int i = 0; i 8; i++) {
int index = random.nextInt(str.length());
buff.append(str.substring(index, index + 1));
}
return buff.toString();
}
}
关于javajtabel和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。