已有101人关注
布局设置
还有0人有此问题
发表在Java图书答疑 2017-07-29
是否精华
版块置顶:

怎么设置成表格在一部分,按钮占一部分,中间的48行代码到60行可以给我看看么

分享到:
精彩评论 2
David
学分:914 LV7
TA的每日心情
最后的冲刺
2017-07-15 10:46:08
2017-08-02
沙发

关键代码如下:

public class TableModelTest extends JFrame {

private DefaultTableModel tableModel;// 定义表格模型对象

private JTable table;// 定义表格对象

private JTextField aTextField, bTextField;// 面板下方两个输入框

private JButton addButton, delButton, updButton;// 增删改三个按钮

public static void main(String args[]) {

TableModelTest frame = new TableModelTest();

frame.setVisible(true);

}

public TableModelTest() {

super();

setTitle("维护表格模型");

setBounds(100, 100, 510, 300);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

String[] columnNames = { "A", "B" };// 定义表格列名数组

String[][] tableValues = { { "A1", "B1" }, { "A2", "B2" }, { "A3", "B3" } };// 定义表格数据数组

// 创建指定表格列名和表格数据的表格模型

tableModel = new DefaultTableModel(tableValues, columnNames);

table = new JTable(tableModel);// 创建指定表格模型的表格

JScrollPane scrollPane = new JScrollPane(table);

getContentPane().add(scrollPane, BorderLayout.CENTER);

buttonInit();// 按钮初始化方法

addListener();// 给组件添加监听事件

}

private void buttonInit() {// 按钮初始化方法

final JPanel panel = new JPanel();

getContentPane().add(panel, BorderLayout.SOUTH);

panel.add(new JLabel("A:"));

aTextField = new JTextField("A4", 10);

panel.add(aTextField);

panel.add(new JLabel("B:"));

bTextField = new JTextField("B4", 10);

panel.add(bTextField);

addButton = new JButton("添加");

updButton = new JButton("修改");

delButton = new JButton("删除");

panel.add(addButton);

panel.add(updButton);

panel.add(delButton);

}

private void addListener() {// 给组件添加监听

// 为表格模型添加事件监听器

tableModel.addTableModelListener(new TableModelListener() {

public void tableChanged(TableModelEvent e) {

int type = e.getType(); // 获得事件的类型

int row = e.getFirstRow() + 1; // 获得触发此次事件的表格行索引

int column = e.getColumn() + 1; // 获得触发此次事件的表格列索引

if (type == TableModelEvent.INSERT) { // 判断是否有插入行触发

System.out.print("此次事件由 插入 行触发,");

System.out.println("此次插入的是第 " + row + " 行!");

// 判断是否有修改行触发

} else if (type == TableModelEvent.UPDATE) {

System.out.print("此次事件由 修改 行触发,");

System.out.println("此次修改的是第 " + row + " 行第 " + column + " 列!");

// 判断是否有删除行触发

} else if (type == TableModelEvent.DELETE) {

System.out.print("此次事件由 删除 行触发,");

System.out.println("此次删除的是第 " + row + " 行!");

} else {

System.out.println("此次事件由 其他原因 触发!");

}

}

});

// 添加按钮事件

addButton.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

String[] rowValues = { aTextField.getText(), bTextField.getText() };// 创建表格行数组

tableModel.addRow(rowValues);// 向表格模型中添加一行

int rowCount = table.getRowCount() + 1;// 获取当前最大行数加1的值

aTextField.setText("A" + rowCount);// 修改文本框默认内容

bTextField.setText("B" + rowCount);

}

});

// 修改按钮事件

updButton.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

int selectedRow = table.getSelectedRow();// 获得被选中行的索引

if (selectedRow != -1) {// 判断是否存在被选中行

// 修改表格模型当中的指定值,参数依次为(值,行,列)

tableModel.setValueAt(aTextField.getText(), selectedRow, 0);

tableModel.setValueAt(bTextField.getText(), selectedRow, 1);

}

}

});

// 删除按钮事件

delButton.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

int selectedRow = table.getSelectedRow();// 获得被选中行的索引

if (selectedRow != -1)// 判断是否存在被选中行

tableModel.removeRow(selectedRow);// 从表格模型当中删除指定行

}

});

}

}


HaiShin
学分:3 LV1
2017-08-12
板凳

多谢

首页上一页 1 下一页尾页 2 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照