0

我希望用户单击图像,并且每个单击的图像都会更改带有卡片布局的面板。所以我有一个带有textarea的面板和一个只有蓝色背景的面板,当我启动程序时,带有textarea的面板显示没有textarea,当我单击图像时它显示蓝色面板,为什么我看不到textarea?

我已经删除了代码中图像的位置

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);
4

1 回答 1

1

在您的代码结束时,您创建了一个JScrollPane阻碍您之前创建的设置。你传入txtrGhgJScrollPane构造函数。因此,滚动窗格重新显示您的文本区域,因为您JTextArea不能同时包含在两个不同的容器中。之后,panelTest1不再包含您的JTextArea“<code>txtrGhg”,但CardLayout仍会panelTest1按照您的要求显示。但它是空的。

于 2013-11-04T15:37:00.960 回答