Java卡片布局不显示文本区域

标签 java swing jtextarea cardlayout

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

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

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

最佳答案

在代码末尾,您创建了一个 JScrollPane 来阻止您之前创建的设置。您在 JScrollPane 的构造函数中传递 txtrGhg。因此,滚动 Pane 会重新设置文本区域的父级,因为 JTextArea 不能同时包含在两个不同的容器中。之后,panelTest1不再包含您的JTextAreatxtrGhg”,但CardLayout仍将显示按照您的要求,panelTest1。但它是空的。

关于Java卡片布局不显示文本区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19770144/

相关文章:

java - 如何使用 google cloud bigquery 进行集成测试

java - 统一成本搜索

java - 写在JTextArea的底部

Java JTable 分组

java - 以编程方式关闭当前显示的 Java Swing JDialog 框

java - 如何将光标移至 JScrollPane 内 JTextArea 的顶部

java - 在java中将未填充的二维数组显示到JTextarea中

Java:将文件内容放入 vector 中

java - 为什么数组中的第一个元素被赋值为 0.0?注意 : Not asking about INDEX, 谈论值(value)

java - JOptionPane无法正常工作