Eclipse-RCP 视图未全屏显示
Eclipse-RCP view not coming on fullscreen
我正在使用 RCP 3.x 并尝试创建一个我想要完整且位于左侧的布局。我尝试了很多组合,但 none 似乎有效。这是屏幕截图。
这是我用来创建这个的代码片段
public MonitorView(final Composite parent)
{
super(parent);
setDisplayName(I18N("Visual Monitoring of iCommand"));
setLayout(new GridLayout());
final Composite composite=GUIToolkit.newComposite(parent, SWT.NONE, new GridData(SWT.TOP,SWT.LEFT,false,false,0,0));
GridLayout layout=new GridLayout();
composite.setLayout(layout);
CreatePartControl(parent);
}
private void CreatePartControl(Composite parent)
{
// TODO Auto-generated method stub
final Composite c =new Composite(parent,SWT.NONE);
final Canvas canvas=new Canvas(parent,SWT.NONE);
Color red = display.getSystemColor(SWT.COLOR_RED);
canvas.setBackground(red);
c.addPaintListener(new PaintListener() {
@Override
public void paintControl(PaintEvent event)
{
int offset_x=130;
int offset_y=70;
int j=0,i=0,n=3,x,y;
DrawRoundedRectangle d= new DrawRoundedRectangle();
//for loop for column 1.Placing elements column wise.
for(i=0;i<n;i++)
{ x=0;y=offset_y*j;
d.drawrectangle(event, x, y, j);
j++;
x=0;y=offset_y*j;
d.drawrectangle(event, x, y, j);
j++;
}
j=0;int flag=6;
//for loop for drawing column 2
for(i=0;i<n;i++)
{
x=offset_x; y=offset_y*j;
d.drawrectangle(event, x, y, flag);
j++;flag++;
x=offset_x;y=offset_y*j;
d.drawrectangle(event, x, y, flag);
flag++;
j++;
}
}
});
}
为什么视图从左边开始,为什么 canvas 只从右边开始显示红色.. 为什么矩形的背景也不是红色的。
补充参考。这是 drawRoundedRectangle 的代码。
void drawrectangle(PaintEvent event, int x,int y,int j)
{
event.gc.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));
event.gc.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_DARK_GRAY));
Font font = new Font(Display.getCurrent(),"Arial",font_size,SWT.BOLD | SWT.ITALIC);
event.gc.setFont(font);
event.gc.drawRoundRectangle(initial_pos_x+x,initial_pos_y+y,width_of_rect,height_of_rect,arc_width,arc_height);
event.gc.fillRoundRectangle(initial_pos_x+adjust_pos_x+x,initial_pos_y+adjust_pos_y+y,width_of_rect+adjust_width_x,height_of_rect+adjust_height_y,arc_width,arc_height);
event.gc.drawText(Services_name.get(j), text_x+x,text_y+y);
}
[编辑]:更改后@greg449 告诉这里 result.It 没有意义 为什么当我进行所需的逻辑更改时尺寸变小了
您弄错了复合控件的父级,因此您最终得到了多个并排的复合控件。
第一个:
final Composite composite=GUIToolkit.newComposite(parent, SWT.NONE, new GridData(SWT.TOP,SWT.LEFT,false,false,0,0));
GridLayout layout=new GridLayout();
composite.setLayout(layout);
CreatePartControl(parent);
您正在将 parent
传递给 CreatePartControl
,因此您没有使用 composite
,但它会占用 space。
第二个:
private void CreatePartControl(Composite parent)
{
// TODO Auto-generated method stub
final Composite c =new Composite(parent,SWT.NONE);
final Canvas canvas=new Canvas(parent,SWT.NONE);
您创建了复合 c
,但随后使用 parent
作为 Canvas
的父级,因此 c
和 canvas
并排。
您还需要在 canvas 上设置绘画侦听器,因为这是您要绘制的内容。
我正在使用 RCP 3.x 并尝试创建一个我想要完整且位于左侧的布局。我尝试了很多组合,但 none 似乎有效。这是屏幕截图。
这是我用来创建这个的代码片段
public MonitorView(final Composite parent)
{
super(parent);
setDisplayName(I18N("Visual Monitoring of iCommand"));
setLayout(new GridLayout());
final Composite composite=GUIToolkit.newComposite(parent, SWT.NONE, new GridData(SWT.TOP,SWT.LEFT,false,false,0,0));
GridLayout layout=new GridLayout();
composite.setLayout(layout);
CreatePartControl(parent);
}
private void CreatePartControl(Composite parent)
{
// TODO Auto-generated method stub
final Composite c =new Composite(parent,SWT.NONE);
final Canvas canvas=new Canvas(parent,SWT.NONE);
Color red = display.getSystemColor(SWT.COLOR_RED);
canvas.setBackground(red);
c.addPaintListener(new PaintListener() {
@Override
public void paintControl(PaintEvent event)
{
int offset_x=130;
int offset_y=70;
int j=0,i=0,n=3,x,y;
DrawRoundedRectangle d= new DrawRoundedRectangle();
//for loop for column 1.Placing elements column wise.
for(i=0;i<n;i++)
{ x=0;y=offset_y*j;
d.drawrectangle(event, x, y, j);
j++;
x=0;y=offset_y*j;
d.drawrectangle(event, x, y, j);
j++;
}
j=0;int flag=6;
//for loop for drawing column 2
for(i=0;i<n;i++)
{
x=offset_x; y=offset_y*j;
d.drawrectangle(event, x, y, flag);
j++;flag++;
x=offset_x;y=offset_y*j;
d.drawrectangle(event, x, y, flag);
flag++;
j++;
}
}
});
}
为什么视图从左边开始,为什么 canvas 只从右边开始显示红色.. 为什么矩形的背景也不是红色的。
补充参考。这是 drawRoundedRectangle 的代码。
void drawrectangle(PaintEvent event, int x,int y,int j)
{
event.gc.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));
event.gc.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_DARK_GRAY));
Font font = new Font(Display.getCurrent(),"Arial",font_size,SWT.BOLD | SWT.ITALIC);
event.gc.setFont(font);
event.gc.drawRoundRectangle(initial_pos_x+x,initial_pos_y+y,width_of_rect,height_of_rect,arc_width,arc_height);
event.gc.fillRoundRectangle(initial_pos_x+adjust_pos_x+x,initial_pos_y+adjust_pos_y+y,width_of_rect+adjust_width_x,height_of_rect+adjust_height_y,arc_width,arc_height);
event.gc.drawText(Services_name.get(j), text_x+x,text_y+y);
}
[编辑]:更改后@greg449 告诉这里 result.It 没有意义 为什么当我进行所需的逻辑更改时尺寸变小了
您弄错了复合控件的父级,因此您最终得到了多个并排的复合控件。
第一个:
final Composite composite=GUIToolkit.newComposite(parent, SWT.NONE, new GridData(SWT.TOP,SWT.LEFT,false,false,0,0));
GridLayout layout=new GridLayout();
composite.setLayout(layout);
CreatePartControl(parent);
您正在将 parent
传递给 CreatePartControl
,因此您没有使用 composite
,但它会占用 space。
第二个:
private void CreatePartControl(Composite parent)
{
// TODO Auto-generated method stub
final Composite c =new Composite(parent,SWT.NONE);
final Canvas canvas=new Canvas(parent,SWT.NONE);
您创建了复合 c
,但随后使用 parent
作为 Canvas
的父级,因此 c
和 canvas
并排。
您还需要在 canvas 上设置绘画侦听器,因为这是您要绘制的内容。