【问题标题】:Add a row and modify the title of a JTable from an other class?添加一行并从其他类修改 JTable 的标题?
【发布时间】:2017-04-13 08:53:38
【问题描述】:

我的班级Table.java 中有一个名为create() 的方法,它创建了一个JTable。

但我想知道如何添加一行,以及如何修改其他类的标题(使用Table.addRow()Table.setTitle() 之类的方法),因为我在 Google 上找不到它,因为喜欢30分钟,我不知道怎么做,因为我没有用Java做实验,把我当作初学者。

这是我的Table.java 类和我的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);

    }

}

【问题讨论】:

  • 我在这里看到了一些问题,您想更新frame 标题并在table 中添加一行,但由于这些仅在静态方法create(...) 的范围内存在(可访问) ,您将需要调整该代码。然后,不要告诉我 Google 无法告诉你如何使用 add a row in a table... 或 change the title of a JFrame ... 这两个都花了我 15 秒
  • 我知道该怎么做,但我只想从其他班级编辑它们。
  • 有什么问题,你知道什么是方法吗?实例变量?在这里查看代码,您应该能够在此之前简单地创建一个方法来更新特定实例 init。
  • 不,我不知道该怎么做,抱歉,这就是我寻求帮助的原因。 “我不知道该怎么做,因为我没有在 Java 中进行过实验,请将我视为初学者。”

标签: java swing jframe jtable


【解决方案1】:

由于这是一个简单的方法,你只需要编写它。

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

当然,使用实例变量会更好,但你使用的是静态方法,所以我就这样保留它

【讨论】:

  • 但是是的!抱歉打扰了,终于简单了:s非常感谢!
猜你喜欢
  • 1970-01-01
  • 2014-11-06
  • 2012-12-07
  • 2021-12-30
  • 2015-06-09
  • 1970-01-01
  • 1970-01-01
  • 2012-11-03
  • 1970-01-01
相关资源
最近更新 更多