Я разработал настольное приложение, использующее библиотеки SWT для графического интерфейса. Запуск приложения на Windows 7 выполняется нормально, макет чист. Я попытался запустить такое же приложение в Windows 10, и это катастрофа! Шрифт огромные и вырезанные окна, ужасные!Библиотека Java SWT ужасная компоновка в Windows 10
Я отключил масштабирование дисплея и поместил 100% в опции просмотра, но ничего не оставил. Как я могу решить эту проблему?
Спасибо тем, кто хочет мне помочь.
java,
Snippet:
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.Button;
import org.eclipse.wb.swt.SWTResourceManager;
public class mySWTApp extends Shell {
\t private Text txt_name;
\t private Text txt_surname;
\t /**
\t * Launch the application.
\t * @param args
\t */
\t public static void main(String args[]) {
\t \t try {
\t \t \t Display display = Display.getDefault();
\t \t \t mySWTApp shell = new mySWTApp(display);
\t \t \t shell.open();
\t \t \t shell.layout();
\t \t \t while (!shell.isDisposed()) {
\t \t \t \t if (!display.readAndDispatch()) {
\t \t \t \t \t display.sleep();
\t \t \t \t }
\t \t \t }
\t \t } catch (Exception e) {
\t \t \t e.printStackTrace();
\t \t }
\t }
\t /**
\t * Create the shell.
\t * @param display
\t */
\t public mySWTApp(Display display) {
\t \t super(display, SWT.SHELL_TRIM);
\t \t setBackground(SWTResourceManager.getColor(SWT.COLOR_TITLE_BACKGROUND_GRADIENT));
\t \t setBackgroundMode(SWT.INHERIT_DEFAULT);
\t \t setLayout(new GridLayout(1, false));
\t \t
\t \t Composite composite = new Composite(this, SWT.BORDER);
\t \t composite.setBackground(SWTResourceManager.getColor(SWT.COLOR_TITLE_BACKGROUND_GRADIENT));
\t \t composite.setFont(SWTResourceManager.getFont("Tahoma", 9, SWT.NORMAL));
\t \t composite.setLayout(new GridLayout(2, false));
\t \t composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
\t \t
\t \t Label lblNewLabel = new Label(composite, SWT.NONE);
\t \t lblNewLabel.setFont(SWTResourceManager.getFont("Tahoma", 9, SWT.NORMAL));
\t \t lblNewLabel.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
\t \t lblNewLabel.setText("Name");
\t \t
\t \t txt_name = new Text(composite, SWT.BORDER);
\t \t txt_name.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
\t \t
\t \t Label lblNewLabel_1 = new Label(composite, SWT.NONE);
\t \t lblNewLabel_1.setFont(SWTResourceManager.getFont("Tahoma", 9, SWT.NORMAL));
\t \t lblNewLabel_1.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
\t \t lblNewLabel_1.setText("Surname");
\t \t
\t \t txt_surname = new Text(composite, SWT.BORDER);
\t \t txt_surname.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
\t \t
\t \t Button btn_add = new Button(composite, SWT.NONE);
\t \t btn_add.setFont(SWTResourceManager.getFont("Tahoma", 9, SWT.NORMAL));
\t \t GridData gd_btn_add = new GridData(SWT.CENTER, SWT.CENTER, false, false, 2, 1);
\t \t gd_btn_add.widthHint = 126;
\t \t btn_add.setLayoutData(gd_btn_add);
\t \t btn_add.setText("Insert");
\t \t createContents();
\t }
\t /**
\t * Create contents of the shell.
\t */
\t protected void createContents() {
\t \t setText("Basic Name");
\t \t setSize(450, 135);
\t }
\t @Override
\t protected void checkSubclass() {
\t \t // Disable the check that prevents subclassing of SWT components
\t }
}
Можете ли вы предоставить версию затмения. И фрагмент кода? – Sravan
Возможно, проблема связана с вашими настройками в Win 8? –
Eclipse Mars .2. SWT 4.5 стабильная версия. Последняя версия Windowsbuilder. – Umberto