java创建swing表格,表的表头为"姓名","账号","密码","操作",其中”操作“下面有”同意“”取消“两个按钮,点击按钮同时返回所在行和列
时间: 2023-08-31 08:42:13 浏览: 194
### 回答1:
在 Java 中使用 Swing 创建表格并包含“操作”列中的按钮,您需要使用表格渲染器。
首先,创建一个继承自 JPanel 的类,并在其中定义两个按钮和一个方法来处理点击事件。例如:
```
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class ButtonPanel extends JPanel {
private JButton agreeButton;
private JButton cancelButton;
public ButtonPanel() {
agreeButton = new JButton("同意");
cancelButton = new JButton("取消");
add(agreeButton);
add(cancelButton);
}
public void addActionListener(ActionListener listener) {
agreeButton.addActionListener(listener);
cancelButton.addActionListener(listener);
}
}
```
然后,在您的表格模型中,将“操作”列设置为 ButtonPanel 类型。例如:
```
import javax.swing.table.AbstractTableModel;
public class MyTableModel extends AbstractTableModel {
private String[][] data = {
{"张三", "zhangsan", "123456", null},
{"李四", "lisi", "123456", null},
{"王五", "wangwu", "123456", null}
};
private String[] columnNames = {"姓名", "账号", "密码", "操作"};
@Override
public int getRowCount() {
return data.length;
}
@Override
public int getColumnCount() {
return columnNames.length;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
if (columnIndex == 3) {
return data[rowIndex][columnIndex];
} else {
return data[rowIndex][columnIndex];
}
}
@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
if (columnIndex == 3) {
data[rowIndex][columnIndex] = (ButtonPanel) aValue;
} else {
data[rowIndex][columnIndex] = (String) aValue;
}
}
@Override
public String getColumnName(int column) {
return columnNames[column];
}
@Override
public Class<?> getColumnClass(int columnIndex) {
### 回答2:
要创建一个Java Swing表格,并设置表头为"姓名","账号","密码","操作",其中"操作"一列有"同意"和"取消"两个按钮。
首先,我们可以使用DefaultTableModel来构建表格模型。然后,使用JTable来创建表格并设置模型。最后,我们可以使用JButton和ActionListener来添加按钮和按钮点击事件。
以下是一个示例代码:
```java
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class SwingTableExample extends JFrame {
private JTable table;
private DefaultTableModel tableModel;
public SwingTableExample() {
// 创建表格模型并设置表头
String[] columnNames = {"姓名", "账号", "密码", "操作"};
tableModel = new DefaultTableModel(columnNames, 0);
// 创建表格并设置模型
table = new JTable(tableModel);
// 添加"同意"和"取消"按钮到"操作"列
TableColumn column = table.getColumnModel().getColumn(3);
column.setCellRenderer(new ButtonRenderer());
column.setCellEditor(new ButtonEditor());
// 将表格添加到窗口中
add(new JScrollPane(table));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setVisible(true);
}
private class ButtonRenderer extends JButton implements TableCellRenderer {
public ButtonRenderer() {
setOpaque(true);
}
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
setText(value.toString());
return this;
}
}
private class ButtonEditor extends DefaultCellEditor {
private JButton button;
private String buttonText;
private boolean clicked;
public ButtonEditor() {
super(new JTextField());
setClickCountToStart(1);
button = new JButton();
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
fireEditingStopped();
}
});
}
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
if (isSelected) {
button.setForeground(table.getSelectionForeground());
button.setBackground(table.getSelectionBackground());
} else {
button.setForeground(table.getForeground());
button.setBackground(table.getBackground());
}
buttonText = value.toString();
button.setText(buttonText);
clicked = true;
return button;
}
public Object getCellEditorValue() {
if (clicked) {
// 返回所在行和列
int row = table.getSelectedRow();
int column = table.getSelectedColumn();
String result = row + "," + column + ":" + buttonText;
JOptionPane.showMessageDialog(null, result); // 弹出对话框显示结果
}
clicked = false;
return buttonText;
}
public boolean stopCellEditing() {
clicked = false;
return super.stopCellEditing();
}
protected void fireEditingStopped() {
super.fireEditingStopped();
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new SwingTableExample();
}
});
}
}
```
这个例子中,使用了一个ButtonRenderer类和一个ButtonEditor类来渲染和编辑表格中的按钮。当用户点击按钮时,getTableCellEditorValue()方法会返回所在行和列,并弹出一个对话框显示结果。
### 回答3:
要创建一个Java的Swing表格,并设置表头为"姓名"、"账号"、"密码"、"操作",其中"操作"列下面有"同意"和"取消"两个按钮,并且点击按钮后能返回所在行和列,可以按以下步骤进行操作:
1. 首先,需要导入相关的Java库:
```
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
import java.awt.event.*;
```
2. 创建一个继承自JFrame的类,用于承载表格和按钮:
```java
public class TableExample extends JFrame {
private JTable table;
public TableExample() {
// 设置窗口标题
super("表格示例");
// 创建表格模型
DefaultTableModel model = new DefaultTableModel();
model.addColumn("姓名");
model.addColumn("账号");
model.addColumn("密码");
model.addColumn("操作");
// 向表格模型添加数据
Object[] data1 = {"张三", "001", "123456", new JButton("同意")};
model.addRow(data1);
Object[] data2 = {"李四", "002", "abcdef", new JButton("取消")};
model.addRow(data2);
// 创建表格
table = new JTable(model);
// 设置操作按钮的监听器
table.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
int row = table.rowAtPoint(e.getPoint());
int column = table.columnAtPoint(e.getPoint());
// 获取按钮对象
Object obj = table.getModel().getValueAt(row, column);
if (obj instanceof JButton) {
JOptionPane.showMessageDialog(null, "按钮位置:行 " + row + ",列 " + column);
}
}
});
// 将表格添加到窗口中
JScrollPane scrollPane = new JScrollPane(table);
getContentPane().add(scrollPane, BorderLayout.CENTER);
// 设置窗口大小、可见性等属性
setSize(400, 300);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
new TableExample();
}
}
```
3. 在上述示例代码中,我们创建了一个继承自JFrame的TableExample类,并实现其构造函数。在构造函数中,我们设置窗口的标题为"表格示例",并创建一个DefaultTableModel对象作为表格的模型。
4. 然后,我们向模型中添加列,分别是"姓名"、"账号"、"密码"、"操作"。接着,我们添加了两行数据,其中"操作"列的数据是一个按钮对象。
5. 接下来,我们为表格添加一个MouseListener监听器,用于监听鼠标点击事件。当鼠标点击到按钮时,我们可以通过获取所在行和列的位置来确定按钮所在的位置,并弹出一个消息框显示该位置。
6. 最后,我们将表格添加到窗口中,并设置窗口的大小、位置和可见性。最后,通过创建TableExample对象,即可显示窗口和表格。
使用上述代码,你可以创建一个带有表格和操作按钮的Swing窗口,并且能够点击按钮时返回所在行和列的位置。
阅读全文