Некоторые сложнсти с использованием JTextField - Java

Узнай цену своей работы

Формулировка задачи:

Имеется несколько проблем с использованием JTextField: 1) При создании объекта JTextField пропадают JLabel - ы (толи полностью попадают, толи становятся невидимыми не знаю...) при чем они находятся в другой панели. 2) Сам JTextField не выделяется на фоне панели в которую он вложен до тех пор, пока на него не кликнешь... Код:
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);
    }
}
P.S Все вышеописанные проблемные элементы находятся внизу кода

Решение задачи: «Некоторые сложнсти с использованием JTextField»

textual
Листинг программы
panelTab.repaint();
panelSearch.repaint();

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.733 из 5