Java-карта не отображает текстовую область

Я хочу, чтобы пользователь нажимал на изображение, и панель с изменениями карты-раскладки для каждого кликаемого изображения. поэтому у меня есть одна панель с текстовой областью и одна с синим фоном, когда я запускаю программу, панель с текстовой областью без текстовой области, когда я нажимаю на изображение, оно показывает синюю панель, почему я не вижу текстовую область?

я удалил расположение изображения в коде

frame = new JFrame("Sandwich deLuxe");
    frame.setBounds(100, 100, 741, 522);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().setLayout(null);

    JPanel panel = new JPanel();
    panel.setBounds(10, 132, 705, 89);
    frame.getContentPane().add(panel);
    panel.setLayout(null);



    JToolBar toolBar = new JToolBar();
    toolBar.setBounds(10, 0, 705, 22);
    frame.getContentPane().add(toolBar);




    panelCont.setBounds(10, 221, 544, 251);
    frame.getContentPane().add(panelCont);
    panelCont.setLayout(cl);

    JPanel panelTest1 = new JPanel();
    JTextArea txtrGhg = new JTextArea();
    txtrGhg.setForeground(Color.BLACK);
    txtrGhg.setBackground(UIManager.getColor("Button.background"));
    txtrGhg.setEditable(false);
    txtrGhg.setText("Velkommen til Sandwich deLuxe\r\n\r\nK\u00F8b din mad  her!\r\n\r\n1. V\u00E6lg en af kategoriene fra oven.\r\n2. V\u00E6lg dinne  retter/sandwichs.\r\n3. Bekr\u00E6ft k\u00F8bet i indk\u00F8bskurven.\r\n4. Din bestilling  er modtaget og vi g\u00E5r straks \r\n   i gang med at tilberede din mad. ");
    txtrGhg.setFont(new Font("Monospaced", Font.PLAIN, 18));
    panelTest1.add(txtrGhg);
    panelCont.add(panelTest1, "1");

    JPanel panelTest2 = new JPanel();
    panelTest2.setBackground(Color.BLUE);
    panelCont.add(panelTest2,"2");
    cl.show(panelCont, "1");

    JLabel lblNewLabel = new JLabel("New label");
    lblNewLabel.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent arg0) {
            cl.show(panelCont, "2");
        }
    });
    lblNewLabel.setIcon(new ImageIcon(""));
    lblNewLabel.setBounds(28, 11, 97, 67);
    panel.add(lblNewLabel);



    JScrollPane scrollBar = new JScrollPane(txtrGhg, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    scrollBar.setViewportBorder(null);
    scrollBar.setPreferredSize(new Dimension(300,200));
    scrollBar.setBorder(BorderFactory.createEmptyBorder());
    panelCont.add(scrollBar, "name_171726698118247");
    panelCont.setOpaque(true);

1 ответ

Решение

В конце вашего кода вы создаете JScrollPane мешая настройке, которую вы создали ранее. Вы передаете txtrGhg в JScrollPaneконструктор. Таким образом, область прокрутки перекрашивает вашу текстовую область как ваш JTextArea не может содержаться в двух разных контейнерах одновременно. После этого, panelTest1 не содержит ваш JTextArea "txtrGhgБольше, но CardLayout все еще покажет panelTest1 как вы просили. Но это пусто.

Другие вопросы по тегам