подскажите, имеется следующий класс
public class View extends JFrame {
public View(String label) throws HeadlessException {
super(label);
super.setSize(500, 700);
super.setLocationRelativeTo(null);
this.setLayout(new GridLayout(25,2));
this.setVisible(true);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setResizable(false);
//Фамилия
JPanel panelPersonFamily=new JPanel();
panelPersonFamily.setBorder(BorderFactory.createEmptyBorder(2,5,2,5));
panelPersonFamily.setLayout(new GridLayout(1,2));
JLabel jlabelPersonFamily=new JLabel("Фамилия");
JTextField jTextFieldPersonFamily=new JTextField();
panelPersonFamily.add(jlabelPersonFamily);
panelPersonFamily.add(jTextFieldPersonFamily);
//Имя
JPanel panelPersonName=new JPanel();
panelPersonName.setBorder(BorderFactory.createEmptyBorder(2,5,2,5));
panelPersonName.setLayout(new GridLayout(1,2));
JLabel jlabelPersonName=new JLabel("Имя");
JTextField jTextFieldPersonName=new JTextField();
panelPersonName.add(jlabelPersonName);
panelPersonName.add(jTextFieldPersonName);
//Отчество
JPanel panelPersonFatherName=new JPanel();
panelPersonFatherName.setBorder(BorderFactory.createEmptyBorder(2,5,2,5));
panelPersonFatherName.setLayout(new GridLayout(1,2));
JLabel jlabelPersonFatherName=new JLabel("Отчество");
JTextField jTextFieldPersonFatherName=new JTextField();
panelPersonFatherName.add(jlabelPersonFatherName);
panelPersonFatherName.add(jTextFieldPersonFatherName);
this.getContentPane().add(panelPersonFamily);
this.getContentPane().add(panelPersonName);
this.getContentPane().add(panelPersonFatherName);
}
}
При создании фамилии, имени и отчества одинаковый код, можно ли все вынести в отдельный метод в который передавать map содержащий ключ - текст объекта JLabel, а значение название переменной объекта JTextField? ("Фамилия" - jTextFieldPersonFamily). Спасибо.
Создать интерфейс
public interface InterJPanel {
public JPanel getPanel();
}
Создать отдельный объект
public class PersonValue implements InterJPanel {
private JPanel personValue;
public PersonValue(String value) {
personValue=new JPanel();
personValue.setBorder(BorderFactory.createEmptyBorder(2,5,2,5));
personValue.setLayout(new GridLayout(1,2));
JLabel jlabelPersonName=new JLabel(value);
JTextField jTextFieldPersonName=new JTextField();
personValue.add(jlabelPersonName);
personValue.add(jTextFieldPersonName);
}
@Override
public JPanel getPanel() {
return personValue;
}
}
Вот итог:
InterJPanel panel1 = new PersonValue("Фамилия");
InterJPanel panel2 = new PersonValue("Имя");
InterJPanel panel3 = new PersonValue("Отчество");
Далее с помощью геттеров получаем из классов их JPanel:
this.getContentPane().add(panel1.getPanel());
this.getContentPane().add(panel2.getPanel());
this.getContentPane().add(panel3.getPanel());
P.S. Переходите на javaFX, swing устарел, не вижу смысла учить даже. Повторите приницы ООП. Изучите что такое геттеры и сеттеры. Код писал на коленках, могут быть ошибки.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Охота понять что конкретно происходит в этих методахЗаходим в класс View и видим вот что:
Как грамотно и удобно организовать аутентификацию в Spring REST Api через JWT? Сессию не хочу использовать, потому что это REST и JWTПроверка токена должна...