我希望用户单击图像,并且带有卡片布局的面板会针对单击的每个图像进行更改。所以我有一个带有文本区域的面板和一个只有蓝色背景的面板,当我启动程序时,带有文本区域的面板显示没有文本区域,当我单击图像时它显示蓝色面板,为什么我看不到文本区域? 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
不再包含您的JTextArea
“txtrGhg
”,但CardLayout
仍将显示按照您的要求,panelTest1
。但它是空的。
关于Java卡片布局不显示文本区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19770144/