2013-11-04 127 views
0

我希望用户点击一个图像,并且点击每个图像的cardlayout更改面板。所以我有一个面板textarea和一个只有一个蓝色的背景,当我启动程序面板textarea显示没有textarea,当我点击图像显示蓝色面板,为什么不能看到textarea?Java cardlayout dosen't show 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); 

回答

1

去除图像的位置,在你的代码的末尾创建JScrollPane挫败你以前创建的安装。您在JScrollPane的构造函数中通过txtrGhg。因此,滚动窗格可以帮助您恢复文本区域,因为您的JTextArea不能同时包含在两个不同的容器中。之后,panelTest1不再包含您的JTextAreatxtrGhg”,但CardLayout仍然会显示panelTest1,因为您已经提出要求。但它是空的。

+0

谢谢Holger,那是个问题,现在我试图让它与scrollpane一起工作 – user2266381