gpt4 book ai didi

java - 带有 2 个选项卡的 JTabbedPane 未显示

转载 作者:行者123 更新时间:2023-12-01 22:19:43 28 4
gpt4 key购买 nike

我正在创建一个程序,当一个人单击标签时,它会将您带到第二个面板,其中有两个选项卡。问题是,当我单击图像标签时,我只看到空白窗口,没有选项卡,也没有任何内容。

import java.awt.*;
import static java.awt.Font.BOLD;
import java.awt.event.*;
import java.awt.event.*;
import java.awt.event.ActionListener;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.swing.*;
import javax.swing.Timer;
import javax.swing.border.*;
import javax.swing.event.*;

public class hotels extends JFrame{

JButton hotel;
JLabel image;
JTabbedPane tabbed,tabbed1;
JPanel panel;
JPanel panel1;
Container pane;

public hotels(){
panel=new JPanel();
panel.setBackground(Color.cyan);
hotel=new JButton();
hotel.setText("Hotels");

Font myFont = new Font("Serif", Font.BOLD, 18);

hotel.setFont(myFont);
panel.setLayout(null);
panel.add(hotel);

hotel.setBounds(50, 80, 100, 40);

image=new JLabel();

image.setBounds(50,1,80,80);
image.setBorder(BorderFactory.createLineBorder(Color.yellow));
image.setBackground(Color.white);
image.setIcon(new ImageIcon("2.gif"));
panel.add(image);

panel1=new JPanel();

tabbed=new JTabbedPane();

tabbed.add( "Round Trip",panel1);
tabbed.add("One Way",panel1);
panel1.setVisible(false);

panel1.revalidate();
panel.revalidate();
panel1.repaint();
panel.repaint();

pane=getContentPane();
pane.add(tabbed);
pane.add(panel1);
pane.add(panel);

image.addMouseListener(new MouseAdapter() {

public void mouseClicked(MouseEvent e){
if (e.getSource()==image){
panel1.show();
panel.setVisible(false);
panel1.setVisible(true);
tabbed.setVisible(true);
}
}
});

}

public static void main(String[] args) {

hotels mw=new hotels();
mw.setVisible(true);
mw.setSize(400, 400);
}

}

最佳答案

 pane.add(tabbed);
pane.add(panel1);
pane.add(panel);

上面的代码尝试向内容 Pane 添加 3 个子项 - 默认情况下,内容 Pane 有一个 BorderLayout,它的 CENTER 位置不能有超过 1 个组件- 因此最后添加的组件是将会看到的组件。您的选择是

  1. 使用 CardLayout它允许您更改动态显示的面板
  2. 从适当的容器中删除所有项目,然后添加它们并重新验证/重新绘制

上面链接中的 1 示例。示例 2(在 MouseListener 中):

pane.removeAll();
pane.add(tabbed);//presuming you want tabbed to show now
pane.revalidate();//or invalidate/validate for <1.7 JRE versions
pane.repaint();

关于java - 带有 2 个选项卡的 JTabbedPane 未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30145912/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com