Java Swing从另一个类访问JPanel [关闭]

问题描述 投票:0回答:1
我是Java的新手,正在尝试摆荡对象我试图访问位于另一个框架上的JPanels。当在frame1中单击按钮时,我想在frame2上显示第二个面板。但是它一直只向我显示第一个面板。我应该使用哪种框架或面板方法使其工作?预先感谢!
java jpanel
1个回答
0
投票
嗯,因为您没有给我们任何代码,但是您正尝试从另一个框架访问JPanel。

我不确定这是否是您的预期输出,但这是我的尝试:

import javax.swing.*; import javax.swing.SwingUtilities; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.Color; import java.awt.Dimension; public class FrameTest { public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { //swing objects should be built in the event dispatch thread, since they're not thread safe. public void run() { buildFrame(); } }); } public static void buildFrame() { JFrame frame1 = new JFrame("FRAME1"); JFrame frame2 = new JFrame("FRAME2"); JPanel panel = new JPanel(); panel.setBackground(Color.GREEN); panel.setPreferredSize(new Dimension(300, 300)); //let's give this empty panel a size and a color so that we can see the panel when visible panel.setVisible(false); JButton button = new JButton("CLICK"); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { panel.setVisible(true); frame2.pack(); } }); frame1.getContentPane().add(button); frame1.setSize(200, 200); frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame2.getContentPane().add(panel); frame2.setSize(300, 300); frame2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame2.setLocationRelativeTo(null); frame1.setVisible(true); frame2.setVisible(true); } }

如果运行此帧,则有两个帧。单击“ FRAME1”中的按钮将使面板在“ FRAME2”中可见。

在评论中,您说您尝试过pack(),setVisible()之类的方法。

不知道为什么没有提供代码,但是为什么这个没用!

© www.soinside.com 2019 - 2024. All rights reserved.