- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个从一个面板移动到另一个面板的程序,并且用户在每个面板中回答一个问题。我目前正在尝试使用 next() 来切换卡,但它给了我一个 IllegalArgumentException 问题。
我已将代码简化为问题的基础,以便消除问题中不必要的代码。我的主要类是箭头,第二类是 Flash,因为我希望每个面板都有自己的物理文件。我尝试在 Flash 中调用相同的 next() 函数以获得相同的效果,即使技术上没有第三个面板。
这是箭头(主要)
package layout;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Arrow{
public JPanel panelHouse;
public JFrame frame = new JFrame();
public int total = 3000;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Arrow window = new Arrow();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
} } }); } //putting all the closing brackets on one line saves space. This is test code so it doesn't matter to me
public Arrow() {
initialize();
}
public Arrow(int x){
//this is here so I don't run initialize when I need to create an Arrow variable in other classes
//it doesn't actually do anything
}
private void initialize() {
CardLayout cl = new CardLayout(0, 0);
frame.setBounds(400, 400, 909, 572);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(cl);
JPanel panelHouse = new JPanel();
panelHouse.setBounds(0, 0, 10, 10);
frame.getContentPane().add(panelHouse, "Housing");
panelHouse.setLayout(null);
Flash Flash1 = new Flash();
frame.getContentPane().add(Flash1, "Flash");
Flash1.setLayout(null);
JButton btnHouseNext = new JButton("NEXT STATION");
btnHouseNext.setFont(new Font("Times New Roman", Font.PLAIN, 20));
btnHouseNext.setBounds(344, 371, 184, 48);
btnHouseNext.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
cl.next(frame);
}
});//Close housingNext button actionlistener
panelHouse.add(btnHouseNext);
}//close initialize
public JPanel getPanelHouse() {
return panelHouse;
}
public JFrame getFrame(){
return frame;
}
}//close class body
这是 Flash(第二个面板)
package layout;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Flash extends JPanel{
private CardLayout cardLayout = new CardLayout();
private static final long serialVersionUID = 1L;
public Flash() {
Arrow a = new Arrow(4);
JPanel Flash1 = new JPanel();
setBounds(0, 0, 10, 10);
setLayout(null);
setBackground(Color.orange);
JButton buttonFlash = new JButton("NEXT STATION");
buttonFlash.setFont(new Font("Times New Roman", Font.PLAIN, 20));
buttonFlash.setBounds(344, 371, 184, 48);
buttonFlash.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
Flash1.setVisible(false);
cardLayout.next(a.getFrame());
}
});
add(buttonFlash);
setVisible(true);
}
}
这是我的错误堆栈跟踪
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: wrong parent for CardLayout
at java.awt.CardLayout.checkLayout(Unknown Source)
at java.awt.CardLayout.next(Unknown Source)
at layout.Arrow$2.actionPerformed(Arrow.java:48)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
现在我还看到了容器是 JPanel 而不是像我一样使用 JFrame 的代码。我这样做是否不正确,应该改变我的做法吗?
编辑:我更改了代码以反射(reflect)建议
最佳答案
您需要替换此行:
frame.getContentPane().setLayout(new CardLayout(0, 0));
这样:
frame.getContentPane().setLayout(cl);
按照当前的编写方式,您将框架的布局设置为全新的 CardLayout,而不是使用您创建并分配给 cl
变量的布局。
关于java - CardLayout IllegalArgumentException 与 next(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42288600/
在使用客户端应用程序和OAuth2授权服务器时出现错误。我用的是Spring。我已经设置了授权服务器、资源服务器和客户端。使用cURL时,授权服务器和资源服务器工作正常。但是,当我为客户端编写设置(包
在使用客户端应用程序和OAuth2授权服务器时出现错误。我用的是Spring。我已经设置了授权服务器、资源服务器和客户端。使用cURL时,授权服务器和资源服务器工作正常。但是,当我为客户端编写设置(包
我希望你能找到我的文字,因为我真的对我的项目感到困惑,因为应用程序不能安装在模拟器中。我希望你的建议和指导。这是运行应用程序时的日志记录。RegisterViewModel.kt。密封的类资源.kt。
我正在尝试制作按钮,单击它们时会播放声音。但我有一个麻烦。我实在搞不清楚。这是我的代码: import javafx.application.Application; import javafx.ev
我正在查看一些遗留代码,发现一个部分导致我得到“比较方法违反了其一般契约!”错误。我知道这个错误是代码不具有传递性的结果,但我不完全理解如何正确修复它。 这是导致错误的代码。 private void
运行以下方法时,我不断收到 IllegalArgumentException: public int randomize(ArrayList list){ Random rdm = new R
我想给 Jenkins 添加一个新的 slave。当我遵循 Jenkins UI 时,它给了我下面的命令 java -jar agent.jar -jnlpUrl http:///computer//
我正在使用运行时反射来加载一个包含以下两个方法的类: public static void foo(int[] args) { System.out.print("foo invoked: "
我已经使用以下查询来匹配所有文档 { "query": { "custom_score": { "query": { "query_string": {
我有这个命令: list.stream() .filter(e -> ...) .sorted(comparatorShuffle()) .findAny() .orE
我收到以下运行时错误: checkParameterIsNotNull, parameter oneClickTokens at com.info.app.fragments.Fragmen
我有两个列表: (def xxa ["olp" "xyz"]) (def xxb ["ulove" "alove" "holp" "sholp"]) 还有一个函数尝试获取第一个列表的元素,这些元素是第
在我的代码中,我在向服务器执行请求的行中捕获了 IllegalArgumentException(索引 85 处查询中的非法字符)。使用 was build as patter 命令,另一个任务正确完
我试图将 String[] 放入 jsonObject 并收到以下错误 java.lang.IllegalArgumentException: Invalid type of value. Type:
我过去的一个试卷问题要求我修改一个方法,以导致发生 IllegalArgumentException。 该方法仅涉及从银行帐户余额中提取资金 这是执行此操作的方法。 公共(public)无效提款(双倍
我这里遇到了一点问题。我想弄清楚如何捕获 IllegalArgumentException。对于我的程序,如果用户输入负整数,程序应该捕获 IllegalArgumentException 并询问用户
每当插件尝试运行此延迟的任务时,我都会收到“ IllegalArgumentException:插件不能为空”错误: Bukkit.getServer().getScheduler().sched
我有这个命令: list.stream() .filter(e -> ...) .sorted(comparatorShuffle()) .findAny() .orE
我在更改应用程序中的场景时遇到问题,看起来像 Main screen > Login screen 我在主文件中将屏幕存储为 hashmap一切都很好,直到我从登录屏幕返回到主屏幕并想再次加载登录屏幕
我在这里缺少什么? 我得到异常:java.lang.IllegalArgumentException:对象不是声明类的实例 public boolean onSave(Object entity,Se
我是一名优秀的程序员,十分优秀!