В настоящее время я пытаюсь создать JFrame, который должен содержать одну строку, за которой следует поле ввода текста для каждой записи в HashMap (longToShortNamesMap). В настоящее время я отображая записи, как follws в JOptionPane:создание JFrame с переменным количеством JLabels
String paneMessage = "";
List keys = new ArrayList(longToShortNameMap.keySet());
for(int i = 0 ; i < keys.size();i++){
paneMessage += "Field name " + keys.get(i) + " has been shortened to " + longToShortNameMap.get(keys.get(i)) + "\n";
}
JOptionPane.showMessageDialog (null, paneMessage, "Data Changed", JOptionPane.INFORMATION_MESSAGE);
Вместо, я хотел бы кадр появиться, который будет иметь такое же сообщение появляется, но будет иметь «longToShortNameMap.get (keys.get (я)) "появляются в редактируемом текстовом поле. Я не совсем уверен, как это происходит, но это то, что у меня есть до сих пор, которое вытаскивает один JFrame с одним ярлыком (который не является редактируемым текстовым полем).
private static void showFrames(Map<String,String> longToShortNameMap) {
JFrame frame = new JFrame("Data Changed");
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.setSize(400, 500);
frame.setResizable(true);
frame.setLocationRelativeTo(null);
JPanel panel = new JPanel(new BorderLayout());
List<String> keys = new ArrayList(longToShortNameMap.keySet());
for (String key : keys) {
JLabel label = new JLabel(longToShortNameMap.get(key));
panel.add(label);
}
frame.add(panel);
}
EDIT: Как контекстное примечание стороны, я делаю это потому, что имена полей ограничены 10 символов в месте в моем приложении, поэтому я вынужден урезать имена полей вплоть до 10 символов. Когда я это делаю, я хочу уведомить пользователя о том, что каждое обрезанное поле было обрезано, и дополнительно дать им возможность изменить обрезанное имя
BorderLayout - неправильный макет, который вы используете здесь - вы все равно ставите все предметы в одинаковое положение по умолчанию (CENTER). Вместо этого попробуйте создать сетку или сетку GridBag. – FredK