Измените направление роста для объекта JTEXFIELD
-
19-09-2019 - |
Вопрос
Мне нужно изменить направление роста объекта JTextfield, когда к нему добавлено больше символов. В настоящее время, когда я добавляю в него больше вещей, он растет слева направо, но мне нужен этот рост границ JTextField справа налево. Например, когда я добавляю «stackoverflow» в этот JTextfield, O/P
<empty space>StackOverflow
но я хочу,
StackOverflow<empty space>
Вы можете помочь мне в этом? Я попробовал SethorizontalAlignment. Но это не работает. Спасибо за помощь.
РЕДАКТИРОВАТЬ: Добавлен SSCCE для лучшего объяснения.
импортировать java.awt.container; Импорт javax.swing.boxlayout; Импорт javax.swing.jbutton; импортировать javax.swing.jframe; Импорт javax.swing.jtextfield;
открытый класс jtextFieldExample {public static void addComponentStopane (контейнерная панель) {pane.setlayout (new Boxlayout (pane, 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();
}
});
}
}
Решение
textField.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
Другие советы
Я не уверен, что понимаю ваш вопрос. Обычно вы создаете JTextField с кодом, как:
JTextField textField = new JTextField(10);
Это дает текстовому поле фиксированный предпочтительный размер, который уважается в зависимости от используемого диспетчера макетов.
Похоже, вы делаете что -то вроде:
JTextField textField = new JTextField();
В этом случае я не думаю, что текстовое поле имеет размер. Можете ли вы даже добавить в это персонаж? Ну, может быть, решение в этом случае состоит в том, чтобы добавить ComponentListener в текстовое поле и отслеживать исходный размер. Каждый раз, когда размер меняется, вы меняете местоположение текстового поля на разницу в размере. Опять же, это может или не может работать в зависимости от менеджера макета.
Если вам нужно больше помощи опубликовать свой SSCCE показывая проблему.