Пожалуйста, несите меня, но я очень новичок в Java swing и буквально потратил дни, пытаясь понять это. У меня есть Рамка с двумя панелями. Первая панель имеет две кнопки («Я упрощаю»): «Новый» и «Открыть». Вторая панель отображает пустой JCombobox, когда сначала появляется фрейм, JCombobox - setEnable (false). Цель состоит в том, чтобы пользователь выбирал «Новый» или «Открыть», а компонент на второй панели либо преобразовывал в JTextField, если пользователь нажимает «Создать» или остается как JComboBox, если пользователь нажимает «Открыть». Элементы JComboBox заполняются из базы данных, заполняя Combobox. Моя проблема пытается выяснить, как преобразовать компонент во второй панели как JTextField или JCombobox. Я попытался сделать combobox похожим на JTextField, используя removeallItems и установив setPopupVisible в false, но это, похоже, не работает. Я продолжаю получать компонент с раскрывающимся стрелкой, который при нажатии на него отображает одну пустую строку, которая выглядит странно. Я хочу запретить раскрывающееся меню отображать пустую строку или преобразовать компонент в простой JTextField. Любая помощь действительно будет применена.Java Swing - как сделать компонент Combobox или JtextField
public class newButtonlistener implements ActionListener {
public void actionPerformed(ActionEvent e) {
clearFields();
newButton.setEnabled(false);
openButton.setEnabled(false);
calcButton.setEnabled(false);
tableButton.setEnabled(false);
saveButton.setEnabled(false);
textField1.setBackground(Color.WHITE);
textField2.setBackground(Color.WHITE);
textField3.setBackground(Color.WHITE);
setDisable(textField2);
textField3.setEnabled(false);
table.setEnabled(false);
textField1.setEnabled(true);
textField1.removeAllItems();
textField1.setPopupVisible(false);
BasicComboPopup popup = new BasicComboPopup(textField1);
popup.setPopupSize(0, 0);
textField1.setEditable(true);
textField1.requestFocus();
}
}
Благодарим за отзыв. Чтобы уточнить это предложение, создайте новый JPanel, который использует CardLayout. Кроме того, сделайте еще два JPanels: card1 и card2. Скажем, card1 содержит JCombobox и card2 в поле JTextfield. Компоненты будут иметь одну и ту же метку, которую я буду добавлять отдельно к каждой панели. Единственное, о чем я не сомневаюсь, - это убедиться, что card1 и card2 выстраиваются в линию и накладываются друг на друга, поэтому визуально это выглядит просто как поле/компонент, просто изменяющий тип, т. Е. Раскрывающееся окно просто появляется и исчезает. Общая рамка изменчива. – AndyB
Нет необходимости в двух других JPanels - вы можете добавлять компоненты к панели, которая содержит компоненты напрямую. Чтобы добавить ярлык, вы можете использовать BorderLayout и поместить «изменяющийся» компонент в CENTER. И наложение будет выполнено с помощью CardLayout. Пример здесь должен объяснить все, включая фрагменты: http://docs.oracle.com/javase/tutorial/uiswing/layout/card.html –