我想要一个带有2个按钮(最终还有更多个按钮)的JFrame应用程序,我可以使用它们在多个重复动作之间进行切换,为简便起见,我现在仅使用控制台打印,尽管稍后可能会调用一个方法。这是JFrame的框架:
public class DayNight extends JFrame implements ActionListener{
//JFrame entities
private JPanel animationPanel;
private JButton button;
private JButton button2;
public static void main(String[] args) {
DayNight frame = new DayNight();
frame.setSize(2000, 1300);
frame.setLocation(1000,350);
frame.createGUI();
frame.setVisible(true);
frame.setTitle("Day/Night Cycle, Rogier");
}
private void createGUI() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container window = getContentPane();
window.setLayout(new FlowLayout() );
animationPanel = new JPanel();
animationPanel.setPreferredSize(new Dimension(2000, 900));
animationPanel.setBackground(Color.black);
window.add(animationPanel);
button = new JButton("choice1");
button.setFont(new Font("Arial", Font.PLAIN, 50));
window.add(button);
button.setActionCommand("choice1");
button.addActionListener(this);
button2 = new JButton("choice2");
button2.setFont(new Font("Arial", Font.PLAIN, 50));
window.add(button2);
button2.setActionCommand("choice2");
button2.addActionListener(this);
}
}
我尝试了以下方法:
public void actionPerformed(ActionEvent event) {
String command = event.getActionCommand();
while ("Stop"!=(command)){
command = event.getActionCommand();
try{
Thread.sleep(500);
if ("choice1".equals(command)){
System.out.println("choice1");
}
else if("choice2".equals(command)){
System.out.println("choice2");
}
else{
System.out.println("no choice");
}
}
catch(InterruptedException ex){
Thread.currentThread().interrupt();
}
}
}
但是当我单击一个按钮后,它一直停留在该打印件上,我什至无法再与这些按钮进行交互。我是否缺少某些东西,还是需要一个完全不同的结构?我已经检查了很多不同的程序,但是它们太复杂了,以至于我无法理解,阅读swing的并发性也并没有为我解决。
编辑:还没有“停止”命令,因为我现在不需要它。
您的代码有很多 错误 。
它以 错误 的字符串比较开始(请参阅此处)。
但是您的实际问题是:您正在使事件调度程序线程处于 休眠状态
(请参阅此处)
因此,您与事件监听器一起 睡觉 的想法是错误的方法。你不能这样子。您必须重新考虑在那里的方法。
而 真正 在这里的答案是:你缺乏 基本的 Java知识。考虑学习这些基本的东西 第一 前进一步的负担过重,如果自己的Swing UI编码。
您的需求似乎是: 后 该按钮被击中-和一定的时间量传递要打印在控制台上的东西。您可以这样做:
public void actionPerformed(ActionEvent event) {
String command = event.getActionCommand();
command = event.getActionCommand();
Runnable printChoice = new Runnable() {
@Override
public void run() {
try{
Thread.sleep(500);
if ("choice1".equals(command)){
System.out.println("choice1");
}
else if("choice2".equals(command)){
System.out.println("choice2");
}
else{
System.out.println("no choice");
}
}
catch(InterruptedException ex){
Thread.currentThread().interrupt();
}
});
new Thread(printChoice).start();
}
以上:
我没有通过编译器来运行它-它的意思是“伪代码”,为您提供一些解决问题的方法。
但是,对此进行进一步考虑-我认为这是朝 错误的 方向进行的。你不希望 任何事情 是 等待 ,当你制定合理的UI应用程序。
换句话说:您想到了:
错误的方法。而是按照以下方式工作:
示例:更改单选按钮会触发事件。您不应有定期检查这些按钮的循环。取而代之的是,您定义了用户必须遵循的明确的操作/事件流,才能触发特定操作。
我有一个代码,向用户显示一个项目列表。列表项旁边有一个切换按钮。因此,当用户打开toggle时,就会触发警报。现在的问题是,当我设置列表中第一项的切换按钮时,当我滚动到列表视图的底部并再次回到第一项时,它消失和/或重置。我完全不明白为什么要把它设置为保持选中状态。在这个论坛里请求某人帮助我。 我的类CSVAdapter。我附在这里。
此代码在启动时执行一次。然后JButton位于中间。加载下一个图像时再次执行,此时JButton已处于正确位置。 我已经尝试了很多方法,比如将JButton添加到JFrame中,将JPanels布局设置为null(使button不可见),重新绘制、打包、无效,但我尝试的一切似乎都不奏效。有人能指示Swing把那个JButton放在我的JFrame的右上角吗?非常感谢!
下面的代码为按钮添加缩放动画。 播放完动画后,我需要切换到其他活动。我试图建立如下逻辑: Android Studio发誓:新动画。动画监听器()
问题内容: ,问题是这样的:当客户端在移动浏览器上浏览并且页面在pagea.html上执行javascript函数,然后导航到pageb.html,然后按返回按钮返回到javascript函数pagea.html。客户端按返回按钮返回pagea.html时将无法运行。它将跳过javascript调用。 我已经尝试了上面链接中提到的解决方案,但似乎不适用于移动Safari。还有其他人遇到此错误吗?你
问题内容: 希望你能在这里帮助我!我想制作一个开关按钮,以打开每日推送通知功能。我怎么做? 开关按钮位于“设置”片段上 我的MainActivity.java: 片段Settings.java 的“ editor.getBoolean”给我无法解决错误! 我能做什么?: Notification_Reciever.java fragemnt_settings.XML: 谢谢!!希望你能帮我! ed
主要内容:创建切换按钮,切换按钮组,ToggleButton行为,样式切换按钮切换按钮具有两种状态:选择或未选择。 我们通常将两个或多个切换按钮组合成一个组,并允许用户只选择一个按钮或不选择。 创建切换按钮 我们可以使用类的三个构造函数创建一个切换按钮。要创建没有任何字幕或图标的切换按钮。 要创建带有文字说明的切换按钮 要创建带有文字说明和图标的切换按钮。 方法可以将文本设置为,以及方法可以将图像安装到。 切换按钮组 切换组不强制选择至少一个按钮。单击所选的切换按钮可取消选