2014-02-07 3 views
0

У меня есть таблица, которая создается и заполняется динамически. Эта динамическая форма отображается при нажатии кнопки из другой формы. Вот код:Не удается увидеть столбцы динамически созданного JTable

package ExaData; 

import java.awt.BorderLayout; 
import java.awt.Color; 
import java.awt.EventQueue; 
import java.awt.FlowLayout; 
import java.awt.event.ItemEvent; 
import java.awt.event.ItemListener; 
import java.text.NumberFormat; 
import javax.swing.JCheckBox; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 
import javax.swing.JTable; 
import javax.swing.table.JTableHeader; 
import org.jfree.chart.ChartFactory; 
import org.jfree.chart.ChartPanel; 
import org.jfree.chart.JFreeChart; 
import org.jfree.chart.axis.NumberAxis; 
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator; 
import org.jfree.chart.plot.CategoryPlot; 
import org.jfree.chart.plot.PlotOrientation; 
import org.jfree.chart.renderer.category.StackedBarRenderer; 
import org.jfree.data.category.CategoryDataset; 
import org.jfree.data.category.DefaultCategoryDataset; 
import org.jfree.ui.RefineryUtilities; 

public class ShowGraph extends javax.swing.JFrame { 


String[][] data; 
String[] columns={"Tanım","Değer"}; 

Sessionn obj; 
    String SGA="SGA"; 
    String PGA="PGA"; 
    String JAVAPOOL="JAVAPOOL"; 
    JCheckBox SGA_CHECK; 
    JCheckBox PGA_CHECK; 
    JCheckBox JAVA_POOL_CHECK; 
    JTable table; 
    JPanel btnPanel,tblPanel; 
    ChartPanel CP; 
    JFreeChart chart; 
    DefaultCategoryDataset dataset; 
    boolean sgaflag=true; 
    boolean pgaflag=true; 
    boolean javapoolflag=true; 
    JScrollPane scroller; 
    JTableHeader header ; 
JCheckBox[] checkboxes; 
boolean[] chkboxflag; 
    public ShowGraph() 
    { 

    // super(); 

     SGA_CHECK=new JCheckBox("SGA"); 
     PGA_CHECK=new JCheckBox("PGA"); 
     JAVA_POOL_CHECK=new JCheckBox("JAVA POOL"); 
     SGA_CHECK.setSelected(true); 
     PGA_CHECK.setSelected(true); 
     JAVA_POOL_CHECK.setSelected(true); 
      btnPanel= new JPanel(new FlowLayout()); 
      tblPanel=new JPanel(new FlowLayout()); 
     btnPanel.add(SGA_CHECK); 
     btnPanel.add(PGA_CHECK); 
     btnPanel.add(JAVA_POOL_CHECK); 
     this.add(btnPanel, BorderLayout.CENTER); 
     this.add(tblPanel,BorderLayout.SOUTH); 
      this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 

      scroller = new JScrollPane(tblPanel); 

this.getContentPane().add(scroller, BorderLayout.CENTER); 

      PGA_CHECK.addItemListener(new ItemListener() { 

      @Override 
      public void itemStateChanged(ItemEvent e) {     
       pgaflag=e.getStateChange() == ItemEvent.SELECTED; 
       update(); 
      } 
     }); 
     SGA_CHECK.addItemListener(new ItemListener() { 

      @Override 
      public void itemStateChanged(ItemEvent e) { 
       sgaflag=e.getStateChange() == ItemEvent.SELECTED; 
       update(); 
      } 
     }); 
     JAVA_POOL_CHECK.addItemListener(new ItemListener() { 

      @Override 
      public void itemStateChanged(ItemEvent e) { 
       javapoolflag=e.getStateChange() == ItemEvent.SELECTED; 
       update(); 
      } 
     }); 

    } 


    private CategoryDataset createDataset() { 

     dataset = new DefaultCategoryDataset(); 
     //BURADA ANA TANIMLAMA BİTTİ 


     if(sgaflag){ 
     dataset.addValue(32.4, SGA, "Node 1"); 
      dataset.addValue(43.2, SGA, "Node 2"); 
      dataset.addValue(23.0, SGA, "Node 3"); 
      dataset.addValue(13.0, SGA, "Node 4"); 
     } 
      if(pgaflag){ 
     dataset.addValue(17.8, PGA, "Node 1"); 
      dataset.addValue(15.6, PGA, "Node 2"); 
      dataset.addValue(111.3, PGA, "Node 3"); 
      dataset.addValue(11.8, PGA, "Node 4"); 
      } 
      if(javapoolflag){ 
     dataset.addValue(27.7, JAVAPOOL, "Node 1"); 
     dataset.addValue(18.3, JAVAPOOL, "Node 2");  
     dataset.addValue(25.5, JAVAPOOL, "Node 3");  
     dataset.addValue(29.5, JAVAPOOL, "Node 4"); 
      } 
     return dataset; 
    } 
private JFreeChart createChart(CategoryDataset dataset) { 

     chart = ChartFactory.createStackedBarChart(
      "EXADATA Görünümü", // chart title 
      "Node'lar",     // domain axis label 
      "Yüzde Dağılım",      // range axis label 
      dataset,      // data 
      PlotOrientation.VERTICAL, // the plot orientation 
      true,      // legend 
      true,      // tooltips 
      false      // urls 
     ); 
     CategoryPlot plot = (CategoryPlot) chart.getPlot(); 


     NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis(); 
     rangeAxis.setNumberFormatOverride(NumberFormat.getPercentInstance()); 
     StackedBarRenderer renderer = (StackedBarRenderer) plot.getRenderer(); 
     renderer.setRenderAsPercentages(true); 
     renderer.setDrawBarOutline(false); 
     renderer.setBaseItemLabelsVisible(true); 
     renderer.setSeriesPaint(0,Color.LIGHT_GRAY); 
     renderer.setSeriesPaint(2, Color.LIGHT_GRAY); 
     renderer.setBaseItemLabelGenerator(
     new StandardCategoryItemLabelGenerator()); 
     return chart; 

    } 

public void veriCek(String[][] data) 
    { 
    this.data=data; 
    } 

public void run() 
{ 

     chart = createChart(createDataset()); 
     table =new JTable(data,columns); 
     table.getColumnModel().getColumn(0).setPreferredWidth(200); 
     table.getColumnModel().getColumn(1).setPreferredWidth(200); 
    CP=new ChartPanel(chart); 
      this.add(CP, BorderLayout.NORTH); 
     header = table.getTableHeader(); 
table.add(header,BorderLayout.NORTH); 
      tblPanel.add(table,BorderLayout.CENTER); 

      this.setSize(600,600); 
    RefineryUtilities.centerFrameOnScreen(this);  
    this.setVisible(true); 

} 
public void update() 
{ 
this.remove(CP); 
     chart = createChart(createDataset()); 
    CP=new ChartPanel(chart); 
      this.add(CP, BorderLayout.CENTER); 
    this.setVisible(true); 
} 


    public static void main(final String[] args) { 
     EventQueue.invokeLater(new Runnable() { 

      @Override 
      public void run() { 

      } 
     }); 
    } 
} 

Когда я запускаю это, я могу видеть каждый объект должным образом, таблицу с данными. Но я не могу видеть заголовки столбцов таблицы. Как я могу это решить?

ответ

5

Вы должны добавить таблицу в панель в прокрутки,

JScrollPane scroller = new JScrollPane(table); 

затем добавить панель прокрутки графического интерфейса.

+0

Это сработало, но есть и другие проблемы. Моя таблица частично покрывает мой график. – AloneInTheDark

+0

* «Это сработало, но теперь есть и другие проблемы». * Так [примите] (http://meta.stackexchange.com/a/65088/155831) ответ и задайте другой вопрос. –

+1

@Aloneinthedark Не устанавливайте размер в рамку. Juse 'pack()' it –

Смежные вопросы