2017-04-13 57 views
-2

我在我的类Table.java中创建了一个名为create()的方法,该方法创建了一个JTable。添加一行并从其他类中修改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); 

    } 

} 
+0

我见这里有一些问题,你想更新'frame'标题并在'table'中添加一行,但由于这些只在静态方法'create(...)'的范围内存在(可达),所以你需要改编该代码。然后,不要告诉我谷歌不能告诉你如何[在表中添加一行](http://stackoverflow.com/q/3549206/4391450)...或[更改JFrame的标题] (http://stackoverflow.com/q/5487615/4391450)...这花了我15秒都为 – AxelH

+0

我知道如何做到这一点,但我只想编辑他们从其他类。 – Laiteux

+0

什么是问题,你知道什么是方法?实例变量?在这里查找代码,您应该能够简单地创建一个方法来在此之前更新特定的实例init。 – AxelH

回答

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 

当然,这将是一个实例变量更好,但你用静态方法,所以我会离开它这样

+0

但是啊!不好意思,最后很简单:非常感谢! – Laiteux

相关问题