Изменить направление роста для объекта JTexField - PullRequest
0 голосов
/ 12 ноября 2009

Мне нужно изменить направление роста объекта JTextField, когда к нему добавляется больше символов. В настоящее время, когда я добавляю к нему больше материала, он растет слева направо, но мне нужен этот рост границ JTextField справа налево. Например, когда я добавляю «StackOverflow» к этому JTextField, o / p равно

<empty space>StackOverflow

но я хочу,

StackOverflow<empty space>

Можете ли вы, ребята, помочь мне с этим? Я попытался установить горизонтальное выравнивание. Но это не работает. Спасибо за любую помощь.

РЕДАКТИРОВАТЬ: Добавлено SSCCE для лучшего объяснения.

import java.awt.Container; импорт javax.swing.BoxLayout; импорт javax.swing.JButton; импорт javax.swing.JFrame; import javax.swing.JTextField;

открытый класс JTextFieldExample { public static void addComponentsToPane (Панель контейнера) { pane.setLayout (новый BoxLayout (панель, BoxLayout.Y_AXIS));

    JTextField transitionEditorJTextField = new JTextField("StackOverFlow");
    pane.add(transitionEditorJTextField);

    System.out.println("If I add text to JTextFiled notice that it grows towards Right - which is normal. " 
                        + "But I want it to grow towards left.");
    JButton button = new JButton("Button.I.Am");
    pane.add(button);



}

/**
 * Create the GUI and show it.  For thread safety,
 * this method should be invoked from the
 * event-dispatching thread.
 */
private static void createAndShowGUI() {
    //Create and set up the window.
    JFrame frame = new JFrame("BoxLayoutDemo");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    //Set up the content pane.
    addComponentsToPane(frame.getContentPane());

    //Display the window.
    frame.pack();
    frame.setVisible(true);
}

public static void main(String[] args) {
    //Schedule a job for the event-dispatching thread:
    //creating and showing this application's GUI.
    javax.swing.SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            createAndShowGUI();
        }
    });
}

}

Ответы [ 2 ]

0 голосов
/ 13 ноября 2009
textField.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
0 голосов
/ 12 ноября 2009

Я не уверен, что понимаю ваш вопрос. Обычно вы создаете JTextField с кодом вроде:

JTextField textField = new JTextField(10);

Это дает текстовому полю фиксированный предпочтительный размер, который учитывается в зависимости от используемого менеджера макета.

Похоже, вы делаете что-то вроде:

JTextField textField = new JTextField();

В этом случае я не думаю, что текстовое поле имеет размер. Можете ли вы даже добавить персонажа к нему? Ну, может быть, решение в этом случае состоит в том, чтобы добавить ComponentListener в текстовое поле и отслеживать исходный размер. Каждый раз, когда размер изменяется, вы меняете расположение текстового поля на разницу в размере. Опять же, это может или не может работать в зависимости от менеджера по расположению.

Если вам нужна дополнительная помощь, опубликуйте SSCCE с указанием проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...