【发布时间】:2014-02-21 13:04:44
【问题描述】:
我正在尝试为国际象棋游戏创建一个 gui,并且可以使用一些帮助。
我设置了两个面板:左面板和右面板(主面板上的两个座位)。左侧面板将包含棋盘本身,右侧面板将包含更多小部件。
问题是,我只能将右侧面板放置在窗口的右侧。
首先给你一些背景知识,这是我希望它的外观:
它的外观如下:
我尝试用 FormLayout() 对象设置主面板(同时包含左右面板的那个),然后设置:
FormData form_data=new FormData();
form_data.left=new FormAttachment(left_panel);
right_panel.setLayoutData(form_data);
但这并没有做任何事情。
以下是相关代码:
shell=new Shell(display,SWT.DIALOG_TRIM);
shell.setText("Chess");
/*********************
* setting main panel
*********************/
Composite main_panel=new Composite(shell, SWT.NONE);
main_panel.setBackgroundImage(background); //size of this image is 800x650, which means it should encompass the left and right panels exactly
main_panel.setBackgroundMode(SWT.INHERIT_DEFAULT);
main_panel.setBounds(background.getBounds());
main_panel.setLayout(new GridLayout(2,false);
/*********************
* setting left panel
*********************/
left_panel=new Composite(main_panel, SWT.NONE);
GridData data=new GridData(SWT.FILL, SWT.FILL, false, true);
data.widthHint = 650;
left_panel.setLayoutData(data);
board_panel=new Composite(left_panel,SWT.NONE);
board_panel.setBackgroundImage(game_board); //size of this image is 520x520
board_panel.setLocation(65, 65); //board size is 520x520, so this centralizes it in left panel
/*********************
* setting right panel
*********************/
right_panel=new Composite(main_panel, SWT.NONE);
right_panel.setBackgroundImage(panel); //size of this image is 150x650
right_panel.setLayoutData(new GridData(SWT.END, SWT.FILL, true, true));
shell.pack();
顺便说一句,如果我没有什么特别的东西,我应该将 Composite 设置为什么样式?
(如您所见,我将其设置为 SWT.NO_RADIO_GROUP 因为我不知道该放什么...)
任何帮助将不胜感激。
**代码已编辑
【问题讨论】:
-
使用
SWT.NONE或SWT.BORDER作为Composite样式。
标签: java user-interface swt