下面是详细讲解Java图形界面(GUI)之表格的示例代码的完整攻略:
1. 准备工作
在讲解示例代码之前,我们需要先进行一些准备工作。具体包括以下几步:
- 了解Java图形界面(GUI)相关的基础知识,包括Swing组件、布局管理器等等。
- 安装Java开发环境(JDK),这里以JDK 1.8为例。
- 确定开发工具。Java开发工具种类众多,推荐使用Eclipse或IntelliJ IDEA进行开发。
2. 示例代码
下面是一个简单的表格示例代码。该程序包括一个表格和一个按钮,当用户点击按钮时,会向表格中添加一行数据。
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class TableExample extends JFrame implements ActionListener {
private JTable table;
private DefaultTableModel model;
private JButton addButton;
public TableExample() {
initGUI();
}
private void initGUI() {
this.setTitle("Table Example");
// 创建表格
String[] header = {"Name", "Age", "Gender"};
model = new DefaultTableModel(header, 0);
table = new JTable(model);
// 创建按钮
addButton = new JButton("Add");
addButton.addActionListener(this);
// 添加表格和按钮到窗口中
Container contentPane = this.getContentPane();
contentPane.setLayout(new BorderLayout());
contentPane.add(new JScrollPane(table), BorderLayout.CENTER);
contentPane.add(addButton, BorderLayout.SOUTH);
this.setSize(400, 300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
// 向表格中添加一行数据
model.addRow(new Object[]{"Tom", 25, "Male"});
}
public static void main(String[] args) {
new TableExample();
}
}
上述代码中,我们使用了Swing组件中的JTable和DefaultTableModel,分别用于显示表格和管理表格数据。在initGUI()方法中,我们创建了一个表格和一个按钮,并将它们添加到窗口中。当用户点击按钮时,程序会调用actionPerformed()方法,向表格中添加一行数据。
3. 示例说明
下面我们进行两个示例说明,以便更好地理解表格的使用。
示例1:从文件读取数据并在表格中显示
假设我们有一个数据文件employee.txt,文件中的每行都包含一个员工的信息,包括姓名、年龄、性别和部门,用逗号分隔。我们希望能够读取该文件的内容,并在表格中显示出来。具体实现,可以参考以下示例代码:
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class ReadFileExample extends JFrame {
private JTable table;
private DefaultTableModel model;
public ReadFileExample() {
initGUI();
loadData();
}
private void initGUI() {
this.setTitle("Read File Example");
String[] header = {"Name", "Age", "Gender", "Department"};
model = new DefaultTableModel(header, 0);
table = new JTable(model);
Container contentPane = this.getContentPane();
contentPane.setLayout(new BorderLayout());
contentPane.add(new JScrollPane(table), BorderLayout.CENTER);
this.setSize(500, 400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
private void loadData() {
try {
BufferedReader reader = new BufferedReader(new FileReader("employee.txt"));
String line;
while ((line = reader.readLine()) != null) {
String[] data = line.split(",");
model.addRow(data);
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new ReadFileExample();
}
}
在上述代码中,我们在initGUI()方法中创建了一个表格,并设置了表头(即每一列的标题)。在loadData()方法中,我们使用BufferedReader读取数据文件中的内容,并将每行数据以逗号为分隔符进行拆分,然后将拆分后的数组作为参数传入model.addRow()方法中,以便向表格中添加一行数据。最后,我们在main()方法中创建了一个ReadFileExample对象,以便运行该程序。
示例2:使用表格编辑器进行数据更新
假设我们已经在表格中显示了一些数据,现在我们希望能够通过表格的编辑器,对表格中的数据进行修改。具体实现,可以参考以下示例代码:
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class EditTableExample extends JFrame implements ActionListener {
private JTable table;
private DefaultTableModel model;
private JButton saveButton;
public EditTableExample() {
initGUI();
}
private void initGUI() {
this.setTitle("Edit Table Example");
String[] header = {"Name", "Age", "Gender", "Department"};
model = new DefaultTableModel(header, 0);
table = new JTable(model);
saveButton = new JButton("Save");
saveButton.addActionListener(this);
Container contentPane = this.getContentPane();
contentPane.setLayout(new BorderLayout());
contentPane.add(new JScrollPane(table), BorderLayout.CENTER);
contentPane.add(saveButton, BorderLayout.SOUTH);
this.setSize(500, 400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == saveButton) {
int rowCount = model.getRowCount();
int colCount = model.getColumnCount();
for (int i = 0; i < rowCount; i++) {
for (int j = 0; j < colCount; j++) {
Object value = model.getValueAt(i, j);
System.out.print(value + "\t");
}
System.out.println();
}
}
}
public static void main(String[] args) {
new EditTableExample();
}
}
在上述代码中,我们在initGUI()方法中创建了一个表格,并设置了表头。在actionPerformed()方法中,我们判断了用户是否点击了“Save”按钮。如果是的话,我们通过model.getRowCount()和model.getColumnCount()方法获取表格的行数和列数,并通过两层循环遍历表格中的所有数据。对于每一个单元格(即一行一列的交叉点),我们使用model.getValueAt()方法获取单元格中原有的数据,并输出到控制台中。
以上就是两个示例的说明。其中,示例1演示了如何从文件中读取数据,并在表格中进行展示;示例2演示了如何通过表格编辑器修改表格中的数据。这两个示例均体现了表格的重要性和灵活性。由此可见,在Java图形界面(GUI)中,表格是一个非常重要的组件。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JAVA图形界面(GUI)之表格的示例代码 - Python技术站