gpt4 book ai didi

java - 无法看到动态创建的 JTable 中的列

转载 作者:行者123 更新时间:2023-12-01 17:16:38 24 4
gpt4 key购买 nike

我有一个动态创建和填充的表。单击另一个表单中的按钮时会显示此动态表单。这是代码:

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() {

}
});
}
}

当我运行这个时,我可以正确地看到每个对象,我的表格和数据。但我看不到我的表格列标题。我该如何解决这个问题?

最佳答案

您必须将表格添加到滚动 Pane

JScrollPane scroller = new JScrollPane(table);

然后将滚动 Pane 添加到您的 GUI 中。

关于java - 无法看到动态创建的 JTable 中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21623340/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com