Мне нужно изменить текст внутри Jкомпонентов, расположенных в координатах x и y на JPanel. Но если я меняю текст везде, за исключением TextFields или PasswordFields, расположение и размеры элементов скольжения.Изменение текста на JComponent
Слушатель, который изменяет параметры элементов
private TextListener textListener = new TextListener() {
@Override
public void textValueChanged(TextEvent e) {
if (comp.getClass() == JButton.class) {
((JButton)comp).setText(ttext.getText());
}else{
if(comp.getClass() == JTextField.class){
((JTextField)comp).setText(ttext.getText());
}else{
if(comp.getClass() == JPasswordField.class){
((JPasswordField)comp).setText(ttext.getText());
}else{
if(comp.getClass() == JTextArea.class){
((JTextArea)comp).setText(ttext.getText());
}else{
if(comp.getClass() == JCheckBox.class){
((JCheckBox)comp).setText(ttext.getText());
}else{
((JRadioButton)comp).setText(ttext.getText());
}
}
}
}
}
try{
comp.setBounds(tx,ty,Integer.valueOf(twidth.getText()),Integer.valueOf(theight.getText()));
}catch(NumberFormatException ex){
JOptionPane.showMessageDialog(null,"Error","Error",JOptionPane.ERROR_MESSAGE);
}
comp.repaint();
}
};
Что я могу сделать? Благодаря!
Я использую BorderLayout в общей раме, но в панели, в которой я поставил JComponents нет макетов. – user2414779
', но в Panel, в котором я поставил JComponents, нет макетов' - ну, вы должны использовать LayoutManger. Задача менеджера компоновки - определить размер компонента. Тогда вам не нужно беспокоиться о любом слушателе. Вы не должны использовать setBounds(). Также вы не должны использовать TextListener, только для компонентов AWT. – camickr
Вы когда-нибудь слышали о 'instanceof'? Вместо записи 'if (comp.getClass() == JButton.class)' write вместо 'if (comp instanceof JButton)'.Даже сделайте еще один шаг, используйте 'AbstractButton', который является предком как JButton, так и JCheckBox' и использует' JTextComponent', который является предком 'JTextField',' JPasswordField' и 'JTextArea' (и другие). Вы можете получить свой большой 'if else' до 4 строк. –