2017-04-13 79 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

相關問題