Я действительно считаю, что следующий код работает с использованием Chrome, а не других браузеров, кроме выбранного в данный момент ответа:
.v-center {
display:table!important; height:125px;
}
.v-center div[class*='col-'] {
display: table-cell!important;
vertical-align:middle;
float:none;
}
.v-center img {
max-height:125px;
}
Возможно, вам придется изменить высоты (в частности, на .v-center
) и удалите / измените div на div[class*='col-']
для ваших нужд.
Завершите вызов с помощью SwingUtilities.invokeLater, чтобы это произошло после обработки всех ожидающих событий AWT:
pricePerLiter.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusGained(java.awt.event.FocusEvent evt) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
pricePerLiter.selectAll();
}
});
}
});
В дополнение к вышесказанному, если вы хотите, чтобы это было для всех текстовых полей, вы можете просто сделать:
KeyboardFocusManager.getCurrentKeyboardFocusManager()
.addPropertyChangeListener("permanentFocusOwner", new PropertyChangeListener()
{
public void propertyChange(final PropertyChangeEvent e)
{
if (e.getNewValue() instanceof JTextField)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
JTextField textField = (JTextField)e.getNewValue();
textField.selectAll();
}
});
}
}
});
Это потому, что JFormattedTextfield переопределяет processFocusEvent для форматирования при получении / потере фокуса.
Один верный способ - расширить JFormattedTextField и переопределить метод processFocusEvent:
new JFormattedTextField("...") {
protected void processFocusEvent(FocusEvent e) {
super.processFocusEvent(e);
if (e.isTemporary())
return;
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
selectAll();
}
});
}
};
Использование focusListener может не всегда работает ... поскольку это будет зависеть от времени, в которое он вызывается, относительно processFocusEvent.
Код camickr можно немного улучшить. Когда фокус переходит от JTextField к другому типу компонента (например, кнопке), последний автоматический выбор не очищается. Это можно исправить так:
KeyboardFocusManager.getCurrentKeyboardFocusManager()
.addPropertyChangeListener("permanentFocusOwner", new PropertyChangeListener()
{
@Override
public void propertyChange(final PropertyChangeEvent e)
{
if (e.getOldValue() instanceof JTextField)
{
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
JTextField oldTextField = (JTextField)e.getOldValue();
oldTextField.setSelectionStart(0);
oldTextField.setSelectionEnd(0);
}
});
}
if (e.getNewValue() instanceof JTextField)
{
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
JTextField textField = (JTextField)e.getNewValue();
textField.selectAll();
}
});
}
}
});