Начиная изучать SWT в затмении, почему этот ярлык не изменит местоположение - PullRequest
0 голосов
/ 02 декабря 2011

Я делаю учебное пособие, и я сам добавил несколько ярлыков, чтобы протестировать его и разбросать несколько вещей, чтобы лучше его схватить, и labellast.setLocation, похоже, просто ничего не делает для labellast, расположение метки не будет изменить ...

Вот мой источник:

public static void main(String[] args) {
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setSize(250, 350);

    Label label1 = new Label(shell, SWT.BORDER);
    label1.setText("Hello World!");
    label1.setSize(100, 20);
    label1.setLocation(30, 30);

    Text text1 = new Text(shell, SWT.BORDER);
    text1.setText("Type Here");
    text1.setTextLimit(50);
    text1.setBounds(10, 10, 200, 20);
    text1.setLocation(30, 60);

    Label hello = new Label(shell, SWT.BORDER);
    hello.setText("type what the top line says.");
    hello.setSize(190, 20);
    hello.setLocation(30, 90);

    Label sep1 = new Label(shell, SWT.SEPARATOR | SWT.HORIZONTAL
            | SWT.SHADOW_IN);
    sep1.setBounds(30, 60, 100, 120);
    Label label2 = new Label(shell, SWT.NONE);
    label2.setText("World Hello");
    label2.setSize(100, 20);
    label2.setLocation(30, 150);

    Label sep2 = new Label(shell, SWT.SEPARATOR | SWT.HORIZONTAL);
    sep2.setBounds(30, 120, 100, 20);

    Label label3 = new Label(shell, SWT.NONE);
    label3.setSize(100, 20);
    label3.setLocation(30, 210);
    label3.setBackground(new Color(display, 200, 111, 50));
    label3.setText("World World.");

    Text text2 = new Text(shell, SWT.NONE);
    text2.setEchoChar('*');
    text2.setBounds(10, 50, 200, 20);
    text2.setText("Password");
    text2.setLocation(30, 250);
    text2.setEditable(false);

    Label labellast = new Label(shell, SWT.NONE);
    labellast.setLocation(30, 300);
    labellast.setText("You cant edit that^^^");
    labellast.setBounds(10, 50, 200, 20);

    shell.open();
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch())
            display.sleep();

    }
    display.dispose();
}

}

1 Ответ

1 голос
/ 02 декабря 2011

Метод setBounds устанавливает положение и размер.

setBounds(int x, int y, int width, int height)

Избавьтесь от вызова на setLocation и просто используйте setBounds:

labellast.setText("You cant edit that^^^");
labellast.setBounds(30, 300, 200, 20);

Вваш код вы сначала набираете setLocation, а затем переопределяете позицию, когда вы набираете setBounds, и это выглядит так, как будто вы не можете изменить местоположение.

...