Некоторые сложнсти с использованием JTextField - Java
Формулировка задачи:
Имеется несколько проблем с использованием JTextField:
1) При создании объекта JTextField пропадают JLabel - ы (толи полностью попадают, толи становятся невидимыми не знаю...) при чем они находятся в другой панели.
2) Сам JTextField не выделяется на фоне панели в которую он вложен до тех пор, пока на него не кликнешь...
Код:
P.S Все вышеописанные проблемные элементы находятся внизу кода
public class Display{
private Dimension windowSize = new Dimension((int)(Toolkit.getDefaultToolkit().getScreenSize().getWidth() / 100 * 66), (int)(Toolkit.getDefaultToolkit().getScreenSize().getHeight() / 100 * 66));
final Color backcolorPanelHeader = new Color(0x1E1411);
final Color backcolorPanelSearch = new Color(0xffdcaf);
final Color backColorActivePanel = new Color(0x2B2216);
final Color backColorNonActivePanel = new Color(0x95846D);
final Color colorTextTab = new Color(0x9d7d46);
final Font fontMain = new Font("Verdana", Font.BOLD, 14);
private JFrame window;
private JPanel panelHeader;
private JPanel panelResultSearch;
private JPanel panelRecipeText;
private JPanel panelSearch;
private JPanel panelTab;
private JPanel panelFilter;
private JPanel panelOptions;
private JLabel labelFilter;
private JLabel labelAddNew;
private JTextField textAreaSearch;
public void create(String title){
window = new JFrame(title);
window.setSize(windowSize);
window.setLocationRelativeTo(null);
window.setResizable(false);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setLayout(null);
panelHeader = new JPanel(null);
panelHeader.setLocation(0, 0);
panelHeader.setVisible(true);
panelHeader.setSize((int)(windowSize.getWidth() / 100 * 100), (int)(windowSize.getHeight() / 100 * 10));
panelHeader.setBackground(backcolorPanelHeader);
panelSearch = new JPanel();
panelSearch.setLocation(0, panelHeader.getHeight());
panelSearch.setVisible(true);
panelSearch.setSize((int)(windowSize.getWidth() / 100 * 60), (int)(windowSize.getHeight() / 100 * 6.5));
panelSearch.setBackground(backcolorPanelSearch);
panelResultSearch = new JPanel(null);
panelResultSearch.setLocation(0, panelHeader.getHeight() + panelSearch.getHeight());
panelResultSearch.setVisible(true);
panelResultSearch.setSize((int)(windowSize.getWidth() / 100 * 60), (int)(windowSize.getHeight() - panelHeader.getHeight() - panelSearch.getHeight()));
panelResultSearch.setBackground(backcolorPanelSearch);
panelRecipeText = new JPanel(null);
panelRecipeText.setLocation(0, panelHeader.getHeight());
panelRecipeText.setVisible(false);
panelRecipeText.setSize((int)(windowSize.getWidth() / 100 * 60), (int)(windowSize.getHeight() - panelHeader.getHeight()));
panelRecipeText.setBackground(backcolorPanelSearch);
panelTab = new JPanel(null);
panelTab.setSize((int)(windowSize.getWidth() - panelSearch.getWidth()), (int)(panelSearch.getHeight()));
panelTab.setLocation(panelSearch.getWidth(), panelHeader.getHeight());
panelTab.setBackground(backColorNonActivePanel);
panelTab.setVisible(true);
panelFilter = new JPanel(null);
panelFilter.setLocation(panelResultSearch.getWidth(), panelHeader.getHeight() + panelTab.getHeight());
panelFilter.setSize((int)(windowSize.getWidth() - panelResultSearch.getWidth()), (int)(windowSize.getHeight() - panelHeader.getHeight() - panelTab.getHeight()));
panelFilter.setVisible(true);
panelFilter.setBackground(backColorActivePanel);
panelOptions = new JPanel(null);
panelOptions.setLocation(panelRecipeText.getWidth(), panelHeader.getHeight() + panelTab.getHeight());
panelOptions.setSize((int)(windowSize.getWidth() - panelRecipeText.getWidth()), (int)(windowSize.getHeight() - panelHeader.getHeight() - panelTab.getHeight()));
panelOptions.setVisible(false);
panelOptions.setBackground(backColorActivePanel);
window.setVisible(true);
window.add(panelHeader);
window.add(panelResultSearch);
window.add(panelSearch);
window.add(panelRecipeText);
window.add(panelTab);
window.add(panelFilter);
window.add(panelOptions);
//
//!!!
//Эти лэйблы пропадают
//!!!
//
labelFilter = new JLabel("Filters");
labelFilter.setHorizontalAlignment(SwingConstants.CENTER);
labelFilter.setVerticalAlignment(SwingConstants.CENTER);
labelFilter.setSize(panelTab.getWidth() / 2, panelTab.getHeight());
labelFilter.setLocation(0, 0);
labelFilter.setFont(fontMain);
labelFilter.setOpaque(true);
labelFilter.setForeground(colorTextTab);
labelFilter.setBackground(backColorActivePanel);
labelAddNew = new JLabel("Add new recipe");
labelAddNew.setHorizontalAlignment(SwingConstants.CENTER);
labelAddNew.setVerticalAlignment(SwingConstants.CENTER);
labelAddNew.setSize(panelTab.getWidth() / 2, panelTab.getHeight());
labelAddNew.setLocation(labelFilter.getWidth(), 0);
labelAddNew.setFont(fontMain);
labelAddNew.setOpaque(false);
labelAddNew.setForeground(backColorActivePanel);
labelAddNew.setBackground(backColorActivePanel);
//!!!
//
//
//!!!
//Тот самый JTextField
textAreaSearch = new JTextField();
textAreaSearch.setSize(panelSearch.getWidth(), panelSearch.getHeight());
textAreaSearch.setLocation(0, 0);
textAreaSearch.setBackground(Color.black);
textAreaSearch.setOpaque(true);
textAreaSearch.setVisible(true);
//!!!
//
panelSearch.add(textAreaSearch);
panelTab.add(labelFilter);
panelTab.add(labelAddNew);
}
}Решение задачи: «Некоторые сложнсти с использованием JTextField»
textual
Листинг программы
panelTab.repaint(); panelSearch.repaint();