Ошибка неправильного выравнивания с Java AWT.Не удается переместить мой ярлык - PullRequest
1 голос
/ 12 марта 2012

Я поместил метку в рамку, но она отказывается двигаться. SetBounds () не работает, и я получаю неправильную ошибку выравнивания, если я помещаю любой аргумент после «Result» ниже, чем 0, 1 или 2, ни один из которых не помещает его в правильное место. Вот где я объявляю ярлык:

Результат метки = новая метка («Результат», 3);

Вот инструкция SetBounds:

result.setBounds (0, 1500, 100, 20);

Эта программа, которую я пишу, я просто хочу, чтобы пользователь ввел 2 числа, добавил их и распечатал результат, используя компоненты GUI. Результатом является ярлык, который отказывается изменить. Код всей программы приведен ниже, и программа все еще не завершена, но если вы скомпилируете его, результат всегда останется слева, и я хочу, чтобы он был на том же уровне, что и TextFields. Эта проблема на самом деле происходит с другими ярлыками, Help1 и Help2. Пожалуйста, не говорите мне, что я должен использовать качели! Мне не нравится свинг.

Мне еще предстоит изменить событие, чтобы оно добавляло пользовательские данные. Я скопировал событие из предыдущей программы.

Код: (Извините за отсутствие комментариев, но это не огромная программа)

import java.awt.*;
import java.awt.event.*;

public class MouseClick {
    TextField number1;
    TextField number2;

    public static void main(String[] args) {
        MouseClick MC = new MouseClick();
    }

    public MouseClick() {
        Frame f = new Frame("Addition Time!");
        Button button = new Button("Click Here To Add The Two Numbers.");
        button.setBounds(175, 250, 230, 30);
        button.addMouseListener(new MyMouseListener());
        f.add(button);
        Label help1 = new Label("Enter the first number below.");
        Label help2 = new Label("Enter the second number below.");
        Label exprsn1 = new Label("+", 0);
        Label exprsn2 = new Label("=", 0);
        Label result = new Label("Result.", 3);
        number1 = new TextField("TextField1", 100);
        number2 = new TextField("TextField2", 100);
        help1.setBounds(50, 80, 150, 20);
        help2.setBounds(250, 80, 150, 20);
        exprsn1.setBounds(00, 80, 30, 30);
        exprsn2.setBounds(00, 80, 30, 30);
        number1.setBounds(50, 100, 100, 20);
        number2.setBounds(250, 100, 100, 20);
        result.setBounds(0, 1500, 100, 20);
        f.add(number1);
        f.add(number2);
        f.add(help1);
        f.add(help2);
        f.add(result);
        f.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent we) {
                System.exit(0);
            }
        });
        f.setSize(600, 300);
        f.setVisible(true);
    }

    public class MyMouseListener extends MouseAdapter {
        public void mouseClicked(MouseEvent me) {
            String S = number1.getText();
            number2.setText(S);
        }
    }
}

1 Ответ

2 голосов
/ 12 марта 2012

Ошибка в том, что 3 не является допустимым значением для параметра "выравнивание" в конструкторе

Label(String text, int alignment) 

Вы путаетесь с TextField (), который имеет похожий конструктор?

TextField(String text, int columns)

Причина, по которой ярлык не отображается в правильном месте, заключается в том, что вы не указали явное использование нулевого макета. Вам нужна эта строка:

public MouseClick() {
    Frame f = new Frame("Addition Time!");
    f.setLayout(null);  // add this line
...