Java swtchart没有';不显示在对话框中
我使用swtchart()并尝试在对话框中显示它 但它总是失败 SWT对话框不支持swtchart,是吗Java swtchart没有';不显示在对话框中,java,swt,swtchart,Java,Swt,Swtchart,我使用swtchart()并尝试在对话框中显示它 但它总是失败 SWT对话框不支持swtchart,是吗 public final class TestDialog extends Dialog { private Chart chart; private static double[] ySeries1 = {1,2,3,4,5,6,7,8,9,0}; public TestDialog(Shell shell) { super(s
public final class TestDialog extends
Dialog {
private Chart chart;
private static double[] ySeries1 = {1,2,3,4,5,6,7,8,9,0};
public TestDialog(Shell shell) {
super(shell);
}
protected Control createDialogArea(Composite parent) {
Composite composite = (Composite) super.createDialogArea(parent);
createChart(composite);
return composite;
}
static public Chart createChart(Composite parent) {
// create a chart
Chart chart = new Chart(parent, SWT.NONE);
// set titles
chart.getTitle().setText("Large Series");
chart.getAxisSet().getXAxis(0).getTitle().setText("Data Points");
chart.getAxisSet().getYAxis(0).getTitle().setText("Amplitude");
// create line series
ILineSeries lineSeries = (ILineSeries) chart.getSeriesSet().createSeries(SeriesType.LINE,
"line series");
lineSeries.setYSeries(ySeries1);
lineSeries.setSymbolSize(2);
// adjust the axis range
chart.getAxisSet().adjustRange();
return chart;
}
}
我认为这个问题与SWTChart无关,而是与您对SWT布局的了解有关 此外,图表没有理由不在SWT对话框中工作 请相应地修改覆盖的
createDialogArea
:
@Override
protected void createDialogArea(final Composite parent)
{
final Composite dialogArea = (Composite) super.createDialogArea(parent);
final Composite container = new Composite(dialogArea, SWT.NULL);
container.setLayout(new GridLayout());
container.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
createChart(container);
return dialogArea;
}
不要直接在对话框区域
下创建内容,而是创建一个中间容器。我碰巧知道,dialogArea
有一个GridLayout
布局,因此我在容器上设置了GridData
你可能想
编辑1
很明显,你的图表正在绘制中,但是对话框打包后,你会得到它没有绘制的印象。尝试下面的代码,并调整对话框大小以查看图表 使对话框适合图表是一个完全不同的问题(关于SWT外壳和布局)
看不到你的代码就说不出来。请发布一个.Hi,这是示例代码感谢您的评论,但我按照您所说的进行了测试,但仍然不起作用。@user2159284添加了另一个示例,可以起作用。启动应用程序时,对话框很小,但您可以调整其大小。图表在那里。
/**
*
* @author ggrec
*
*/
public class ChartDialog extends Dialog
{
// ====================== 2. Instance Fields =============================
private static double[] ySeries1 = {1,2,3,4,5,6,7,8,9,0};
// ==================== 3. Static Methods ====================
public static void main(final String[] args)
{
final Display display = new Display();
new ChartDialog(new Shell(display)).open();
display.sleep();
display.dispose();
}
// ==================== 4. Constructors ====================
public ChartDialog(final Shell parent)
{
super(parent);
}
// ==================== 5. Creators ====================
@Override
protected Composite createDialogArea(final Composite parent)
{
final Composite dialogArea = (Composite) super.createDialogArea(parent);
final Composite container = new Composite(dialogArea, SWT.NULL);
container.setLayout(new FillLayout());
container.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
createChart(container);
return dialogArea;
}
@Override
protected void setShellStyle(final int newShellStyle)
{
super.setShellStyle(newShellStyle | SWT.RESIZE);
}
static private Chart createChart(final Composite parent)
{
// create a chart
final Chart chart = new Chart(parent, SWT.NONE);
// set titles
chart.getTitle().setText("Large Series");
chart.getAxisSet().getXAxis(0).getTitle().setText("Data Points");
chart.getAxisSet().getYAxis(0).getTitle().setText("Amplitude");
// create line series
final ILineSeries lineSeries = (ILineSeries) chart.getSeriesSet().createSeries(SeriesType.LINE, "line series");
lineSeries.setYSeries(ySeries1);
lineSeries.setSymbolSize(2);
// adjust the axis range
chart.getAxisSet().adjustRange();
return chart;
}
}