这个程序应该在一个JFrame中添加两个面板,每个面板都有一个开关按钮,允许用户在每个面板之间切换。它编译得很好,但是当我试图单击Switch1按钮时,我得到了这个错误:
java线程“AWT-EventQueue-0”中出现异常。ClassCastException:java。awt。无法将BorderLayout转换为java。awt。测试仪上的卡片布局。在javax上执行的操作(tester.java:36)。摆动抽象按钮。fireActionPerformed(未知源代码)在javax上执行。摆动AbstractButton$Handler。在javax上执行的操作(未知源)。摆动DefaultButtonModel。fireActionPerformed(未知源代码)在javax上执行。摆动DefaultButtonModel。setPressed(未知源代码)位于javax。摆动普拉夫。基本的基本按钮列表。java上的MouseRelease(未知源代码)。awt。组成部分javax上的processMouseEvent(未知源代码)。摆动JComponent。java上的ProcessMouseeEvent(未知源代码)。awt。组成部分java上的processEvent(未知源)。awt。容器java上的processEvent(未知源)。awt。组成部分java上的dispatchEventImpl(未知源代码)。awt。容器java上的dispatchEventImpl(未知源代码)。awt。组成部分java上的dispatchEvent(未知源)。awt。轻量级调度员。java上的retargetMouseEvent(未知源代码)。awt。轻量级调度员。java上的ProcessMouseeEvent(未知源代码)。awt。轻量级调度员。java上的dispatchEvent(未知源)。awt。容器java上的dispatchEventImpl(未知源代码)。awt。窗java上的dispatchEventImpl(未知源代码)。awt。组成部分java上的dispatchEvent(未知源)。awt。事件队列。java上的dispatchEventImpl(未知源代码)。awt。事件队列。在java上访问200美元(未知来源)。awt。事件队列3美元。在java上运行(未知源代码)。awt。事件队列3美元。在java上运行(未知源代码)。安全访问控制器。java上的doPrivileged(本机方法)。安全ProtectionDomain 1美元。java上的doIntersectionPrivilege(未知源代码)。安全ProtectionDomain 1美元。java上的doIntersectionPrivilege(未知源代码)。awt。事件队列4美元。在java上运行(未知源代码)。awt。事件队列4美元。在java上运行(未知源代码)。安全访问控制器。java上的doPrivileged(本机方法)。安全ProtectionDomain 1美元。java上的doIntersectionPrivilege(未知源代码)。awt。事件队列。java上的dispatchEvent(未知源)。awt。EventDispatchThread。java上的pumpOneEventForFilters(未知源代码)。awt。EventDispatchThread。java上的pumpEventsForFilter(未知源代码)。awt。EventDispatchThread。java上的pumpEventsForHierarchy(未知源代码)。awt。EventDispatchThread。java上的pumpEvents(未知源)。awt。EventDispatchThread。java上的pumpEvents(未知源)。awt。EventDispatchThread。运行(未知源)
我已经将JFrame布局设置为CardLayout,所以当我使用this.getLayout()时,它应该返回一个CardLayout对象。这是程序:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class tester extends JFrame implements ActionListener
{
CardLayout cc = new CardLayout();
JLabel text1 = new JLabel("Panel 1");
JLabel text2 = new JLabel("Panel 2");
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
JButton switch1 = new JButton("Switch1");
JButton switch2 = new JButton("Switch2");
boolean panel = true;
public tester()
{
setSize(100, 100);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(cc);
switch1.addActionListener(this);
switch2.addActionListener(this);
panel1.add(switch1);
panel1.add(text1);
panel2.add(switch2);
panel2.add(text2);
add(panel1, "Panel 1");
add(panel2, "Panel 2");
setVisible(true);
}
public void actionPerformed(ActionEvent evt)
{
if(panel)
{
CardLayout pane = (CardLayout)this.getLayout();
pane.last(this);
panel = false;
}
else
{
CardLayout pane = (CardLayout)this.getLayout();
pane.first(this);
panel = true;
}
repaint();
}
public static void main(String[] args)
{
tester test = new tester();
}
}
快速修复方法是直接引用卡片布局
和内容窗格。维兹。
public void actionPerformed(ActionEvent evt)
{
if(panel)
{
//CardLayout pane = (CardLayout)this.getLayout();
cc.last(this.getContentPane());
panel = false;
}
else
{
//CardLayout pane = (CardLayout)this.getLayout();
cc.first(this.getContentPane());
panel = true;
}
//repaint(); not necessary either..
}
更好的解决方法是在JPanel
中设计GUI(并在其中使用CardLayout
),并简单地创建一个JFrame
的实例来显示面板(而不是扩展框架)。
问题内容: 我是mysql和jdbc的新手,但出现此标题错误。我整天都在搜索,找不到适合我的解决方案。 我尝试过的操作:卸载/重新安装mysql,将mysql-connector- java-5.1.25-bin.jar和ojdbc7.jar复制粘贴到与我要运行的.class文件相同的位置,然后将该程序重建在其他目录中,可能还有其他几件事。 我正在使用notepad ++进行编码,并使用Windo
我正在尝试仅使用本地依赖项编译和运行java grpc客户端,但出现以下错误: 这是我的gradle文件: 程序将编译,但不运行。我已经从protos生成了我的java文件,并验证了我是否使用了正确的protoc和protoc gen grpc java与我正在使用的jar库相对应。非常感谢您的帮助。
我收到一个奇怪的错误。在我初始化总数的线上。如果你有空闲时间帮我,我不明白; 第10行:Char 24:运行时错误:-inf超出了“int”(solution.cpp)类型的可表示值的范围摘要:UndefinedBehaviorSanitizer:undefined behavior prog_joined。cpp:19:24
我在上面有一个问题:我使用了提供的答案,但仍然击中了一个对象错误。你能看到我错过了什么吗?我在“cash_sheet.range(”C8“).pastespecial xlpastevalues”处找到了错误
我试图插入到一个MySQL数据库,代码工作和插入,但立即崩溃,看不出问题。 Applications.loginandRegister e/AndroidRuntime:致命异常:主进程:Applications.loginandRegister,PID:2545 Android.view.WindowManager$BadTokenException:无法添加窗口--令牌Android.os.B