如何解决按钮不显示与其相连的框架
我正在尝试为我正在制作的应用程序编写代码,我的主框架上有 6 个按钮。当我按下其中一个按钮时,它会调出一个设置了选项卡式布局的框架。
我已正确编码选项卡式框架,当我将每个框架设置为可见时,它们会出现在屏幕上,但在按下按钮时不会出现。
我有连接到按钮和框架的动作侦听器以及构造函数,但由于某种原因,我无法让我的代码正常工作。
我已经添加了我的驱动程序和我试图相互连接的前两个表单。
public class SimpsonsDriver {
//@param args the command line arguments
public static void main(String[] args) {
// Todo code application logic here
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame simpsonFrame = new JFrame("The Simpson");
JFrame homerFrame = new JFrame ("Homer Simpson");
JFrame margeFrame = new JFrame ("Marge Simpson");
JFrame bartFrame = new JFrame ("Bart Simpson");
JFrame lisaFrame = new JFrame("Lisa Simpson");
JFrame maggieFrame = new JFrame("Maggie Simpson");
SimpsonForm simpsonForm = new SimpsonForm(simpsonFrame,homerFrame,margeFrame,bartFrame,lisaFrame,maggieFrame);
HomerForm homerForm = new HomerForm(homerFrame,simpsonFrame);
MargeForm margeForm = new MargeForm(margeFrame,simpsonFrame);
BartForm bartForm = new BartForm(bartFrame,simpsonFrame);
LisaForm lisaForm = new LisaForm(lisaFrame,simpsonFrame);
MaggieForm maggieForm = new MaggieForm(maggieFrame,simpsonFrame);
}
}
public class SimpsonForm implements ActionListener{
JFrame simpsonFrame,maggieFrame;//instance variables
JButton homerBtn,margeBtn,bartBtn,lisaBtn,maggieBtn,closeBtn; //instance variables
public SimpsonForm(JFrame simpsonFrame,JFrame homerFrame,JFrame margeFrame,JFrame bartFrame,JFrame lisaFrame,JFrame maggieFrame) {
this.simpsonFrame = simpsonFrame;
this.homerFrame = homerFrame;
this.margeFrame = margeFrame;
this.bartFrame = bartFrame;
this.lisaFrame = lisaFrame;
this.maggieFrame = maggieFrame;
simpsonFrame.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);
createPanel();
}//end constructor method SimpsonForm
private void createPanel(){
homerBtn = new JButton ("Homer");
margeBtn = new JButton ("Marge");
bartBtn = new JButton ("Bart");
lisaBtn = new JButton ("Lisa");
maggieBtn = new JButton ("Maggie");
closeBtn = new JButton ("Close");
FlowLayout flow = new FlowLayout();
JPanel p1 = new JPanel();
p1.setLayout(flow);
JPanel p2 = new JPanel();
p2.setLayout(flow);
ImageIcon img = new ImageIcon(this.getClass().getResource("simpsons.png"));
JLabel imgLabel = new JLabel();
imgLabel.setIcon(img);
imgLabel.setBounds(10,10,img.getIconWidth(),img.getIconHeight());
p1.add(imgLabel);
p2.add(homerBtn);
homerBtn.addActionListener(this);
p2.add(margeBtn);
margeBtn.addActionListener(this);
p2.add(bartBtn);
bartBtn.addActionListener(this);
p2.add(lisaBtn);
lisaBtn.addActionListener(this);
p2.add(maggieBtn);
maggieBtn.addActionListener(this);
p2.add(closeBtn);
closeBtn.addActionListener(this);
simpsonFrame.setLayout(new BorderLayout());
simpsonFrame.setResizable(false);
simpsonFrame.add(p1,BorderLayout.BEFORE_FirsT_LINE);
simpsonFrame.add(p2,BorderLayout.CENTER);
simpsonFrame.setSize(425,425);
simpsonFrame.setLocationRelativeto(null);
simpsonFrame.setVisible(true);
}//end method createPanel
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == homerBtn) {
homerFrame.setVisible(true);
simpsonFrame.setVisible(false);
}
else if(e.getSource() == margeBtn) {
margeFrame.setVisible(true);
simpsonFrame.setVisible(false);
}
else if(e.getSource() == bartBtn) {
bartFrame.setVisible(true);
simpsonFrame.setVisible(false);
}
else if(e.getSource() == lisaBtn) {
lisaFrame.setVisible(true);
simpsonFrame.setVisible(false);
}
else if(e.getSource() == maggieBtn) {
maggieFrame.setVisible(true);
simpsonFrame.setVisible(false);
}
else if(e.getSource() == closeBtn) {
System.exit(0);
}//end if
}//end event handler
}
public class HomerForm implements ActionListener{
JFrame simpsonFrame,homerFrame;
JButton closeBtn;
public HomerForm(JFrame simpsonFrame,JFrame homerFrame ) {
this.simpsonFrame = simpsonFrame;
this.homerFrame = homerFrame;
createPanel();
}
private void createPanel() {
homerFrame = new JFrame("Homer Simpson");
closeBtn = new JButton("Close");
closeBtn.setSize(200,50);
ImageIcon ogImage = new ImageIcon(this.getClass().getResource("/homer1.png"));
JLabel ogLabel = new JLabel();
ogLabel.setIcon(ogImage);
JPanel p1 = new JPanel();
p1.add(ogLabel);
ImageIcon hwImage = new ImageIcon(this.getClass().getResource("/homer2.png"));
JLabel hwLabel = new JLabel();
hwLabel.setIcon(hwImage);
JPanel p2 = new JPanel();
p2.add(hwLabel);
ImageIcon cImage = new ImageIcon(this.getClass().getResource("/homer3.png"));
JLabel cLabel = new JLabel();
cLabel.setIcon(cImage);
JPanel p3 = new JPanel();
p3.add(cLabel);
JPanel p4 = new JPanel();
JTabbedPane tab = new JTabbedPane();
tab.setBounds(100,100,300,300);
tab.add("Original",p1);
tab.add("HalfWay",p2);
tab.add("Current",p3);
tab.add("Close",p4);
p4.add(closeBtn);
closeBtn.setLayout(new BorderLayout());
closeBtn.addActionListener(this);
homerFrame.add(tab);
homerFrame.setResizable(false);
homerFrame.setSize(500,500);
homerFrame.setLocationRelativeto(null);
homerFrame.setVisible(false);
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == closeBtn) {
homerFrame.setVisible(false);
simpsonFrame.setVisible(true);
}//end if
else
{
System.exit(0);
}
}
}
当我运行它时,我得到了这个图像。 simpsonsFrame 这是当我单击 Homer 按钮时发生的情况,然后我必须将其最大化才能看到空白屏幕。homerFrame。 当我将 homerFrame 设置为可见时,它会显示如果按下按钮会出现什么。它显示 homerFrame 然后它显示 simpsonFrame。homersetVisible true
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。