添加一行并修改来自其他class的JTable的标题?
Add a row and modify the title of a JTable from an other class?
我的 class Table.java
中有一个名为 create()
的方法,它创建了一个 JTable。
但我想知道如何将它添加一行,以及如何修改另一个 class 的标题(使用 Table.addRow()
和 Table.setTitle()
之类的方法),因为大约 30 分钟后,我在 Google 上找不到它,而且我不知道该怎么做,因为我没有在 Java 中进行过实验,请将我视为初学者。
这是我的 Table.java
class 和我的 create()
方法:
package fr.laiteux.test.gui;
import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.WindowConstants;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;
public class Table{
public static void create(String name, double version, String author, int largeur, int hauteur){
JFrame frame = new JFrame(String.format(name + " " + version + " by " + author));;
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setSize(largeur, hauteur);
Container container = frame.getContentPane();
DefaultTableModel model = new DefaultTableModel(new Object[]{"Username", "Email", "Name", "Birthday", "Phone"}, 0);
JTable table = new JTable(model);
table.setVisible(true);
JScrollPane scrollPane = new JScrollPane(table);
table.setFillsViewportHeight(true);
DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer();
centerRenderer.setHorizontalAlignment(SwingConstants.CENTER);
table.getColumnModel().getColumn(1 - 1).setCellRenderer(centerRenderer);
table.getColumnModel().getColumn(2 - 1).setCellRenderer(centerRenderer);
table.getColumnModel().getColumn(3 - 1).setCellRenderer(centerRenderer);
table.getColumnModel().getColumn(4 - 1).setCellRenderer(centerRenderer);
table.getColumnModel().getColumn(5 - 1).setCellRenderer(centerRenderer);
TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(table.getModel());
table.setRowSorter(sorter);
container.add(scrollPane);
frame.setVisible(true);
}
}
这个方法简单,写出来就行了
public class Table{
....
public static setTitle(String title){
...
}
...
}
当然,要能够在此范围之外更新实例,您需要更新当前方法来存储实例。
由于您处于静态上下文中,只需执行
public class Table{
private static Jframe frame;
private static JTable table;
public static void create(String name, double version, String author, int largeur, int hauteur){
frame = new JFrame(String.format(name + " " + version + " by " + author));; // Not that I remove the declaration here to use the global variable
当然,用实例变量会更好,但是你用的是静态方法,所以我就这样了
我的 class Table.java
中有一个名为 create()
的方法,它创建了一个 JTable。
但我想知道如何将它添加一行,以及如何修改另一个 class 的标题(使用 Table.addRow()
和 Table.setTitle()
之类的方法),因为大约 30 分钟后,我在 Google 上找不到它,而且我不知道该怎么做,因为我没有在 Java 中进行过实验,请将我视为初学者。
这是我的 Table.java
class 和我的 create()
方法:
package fr.laiteux.test.gui;
import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.WindowConstants;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;
public class Table{
public static void create(String name, double version, String author, int largeur, int hauteur){
JFrame frame = new JFrame(String.format(name + " " + version + " by " + author));;
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setSize(largeur, hauteur);
Container container = frame.getContentPane();
DefaultTableModel model = new DefaultTableModel(new Object[]{"Username", "Email", "Name", "Birthday", "Phone"}, 0);
JTable table = new JTable(model);
table.setVisible(true);
JScrollPane scrollPane = new JScrollPane(table);
table.setFillsViewportHeight(true);
DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer();
centerRenderer.setHorizontalAlignment(SwingConstants.CENTER);
table.getColumnModel().getColumn(1 - 1).setCellRenderer(centerRenderer);
table.getColumnModel().getColumn(2 - 1).setCellRenderer(centerRenderer);
table.getColumnModel().getColumn(3 - 1).setCellRenderer(centerRenderer);
table.getColumnModel().getColumn(4 - 1).setCellRenderer(centerRenderer);
table.getColumnModel().getColumn(5 - 1).setCellRenderer(centerRenderer);
TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(table.getModel());
table.setRowSorter(sorter);
container.add(scrollPane);
frame.setVisible(true);
}
}
这个方法简单,写出来就行了
public class Table{
....
public static setTitle(String title){
...
}
...
}
当然,要能够在此范围之外更新实例,您需要更新当前方法来存储实例。
由于您处于静态上下文中,只需执行
public class Table{
private static Jframe frame;
private static JTable table;
public static void create(String name, double version, String author, int largeur, int hauteur){
frame = new JFrame(String.format(name + " " + version + " by " + author));; // Not that I remove the declaration here to use the global variable
当然,用实例变量会更好,但是你用的是静态方法,所以我就这样了