【问题标题】:The JButton is not responding, why?JButton 没有响应,为什么?
【发布时间】:2014-11-16 10:53:41
【问题描述】:

我试图让按钮在按下时显示一条消息,但它不起作用。谁能告诉我我错过了什么?

最后我有KeyListenerJOptionPane 的if,但网站不允许我发布它(我是新手)。

无论如何,如果有人能告诉我我做错了什么,那就太好了,谢谢。

public javalearning(){

FlowLayout f = new FlowLayout();
setLayout(f);
this.setSize(200,200);

JFrame j = new JFrame();
this.setTitle("this is a tittle");

JButton button = new JButton();
    button.setText("Button");
    this.add(button);

    JButton button2 = new JButton();
    button2.setText("Button2");
    this.add(button2);

    this.setVisible(true);
}

【问题讨论】:

  • 听者在哪里?
  • 按钮没有代码可以做任何事情。这里有一个想法:查看有关如何使用 JButtons 的教程,例如 this one,来自 Google 搜索的第一个命中 java jbuttton tutorial
  • 该站点将允许您发布您需要发布的任何文本和代码,只要它不是大量代码(无论如何您都不想发布)。如果您尝试发布带有代码的图像,请不要。仅将代码作为文本发布,然后可以格式化为代码。
  • 如果您将代码放在代码块中,该站点允许您输入代码。否则,它可能会告诉您“此代码应位于代码块中”之类的信息。粘贴您的代码,用鼠标选择它,然后使用上面带有{} 的按钮将其变成代码块。
  • “最后我得到了KeyListener..” JButtonActionListener 配合得更好,因为后者会同时响应两个键盘 鼠标输入。 OTOH(似乎)这不是直接的问题。顺便说一句 - 以所有小写字母输入的单词很难阅读,就像试图听某人喃喃自语一样。请在句子的开头使用大写字母来表示单词 I,以及像 ArrayList 或 Oracle 这样的专有名称。

标签: java swing jbutton


【解决方案1】:

请按照此代码中的示例进行操作,您会没事的。如果在一天结束时您无法解决它。你可以回信。我相信这会对你有所帮助。

import javax.swing.*;
import java.awt.event.*;

public class ChangeButtonLabel{
  JButton button;
  public static void main(String[] args){
  ChangeButtonLabel cl = new ChangeButtonLabel();
  }



  public ChangeButtonLabel(){
  JFrame frame = new JFrame("This is a Frame");
  button = new JButton("Button");
  button.addActionListener(new MyAction());
  frame.add(button);
  frame.setSize(400, 400);
  frame.setVisible(true);
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }

  public class MyAction implements ActionListener{
  public void actionPerformed(ActionEvent e){
  String text = (String)e.getActionCommand();
  if (text.equals("Button2")){
  button.setText("I am Sectona");
  }
  else{
  button.setText("Click Me");
  }
  }
  }
}

【讨论】:

  • 终于成功了,谢谢。但只是出于好奇,是否有“if (text.equals(button))”的替代方法?我的意思是另一个使按钮响应的声明,难道没有像 javascript 中的 OnClick 或类似的声明吗?再次感谢。
  • @Javanoob:你仍然应该改进你原来的问题,因为我们都不清楚你现在(甚至过去)的问题是什么。
  • 哈哈其实我真的不知道,嗯,我真的是java新手,虽然我很喜欢这种语言,但有些陈述真的很难理解。我试图通过问一些愚蠢的问题来让它变得简单哈哈。无论如何。事情只是制作一个带有 2 个按钮的程序,当你按下它们时会显示一条消息,所以现在已经完成了,所以我接下来要做的是我想在程序中放几张图片,然后使用 2 个按钮作为下一步和返回显示图片
  • @Javanoob:好的,现在你的 ActionListener 已经开始工作了吗?将来,您将希望在您的问题中显示您的 ActionListener 代码或任何对您的问题至关重要的代码。至于交换图像,最简单的方法是将图像放入 ImageIcons,也许将它们放入 ArrayList<ImageIcon,将 JLabel 添加到您的 GUI,然后通过其 setIcon(...) 方法交换标签显示的图标。祝你好运。
【解决方案2】:

你说:

最后我有 JOptionPane 的 KeyListener 和 if,

正如tutorial that I've linked to in my comment 将解释的那样,您不要将 KeyListener 与 JButton 一起使用,而是使用 ActionListener。

例如,

myButton.addActionListener(new ActionListener() {
   @Override
   public void actionPerformed(ActionEvent evt) {
       System.out.println("Button pressed");
   }
});

你说:

但网站不允许我发布它(我是新手)。

本网站允许您发布任何合理数量的代码。如果您在发布时遇到问题,请告诉我们问题的具体细节,也许我们可以帮助您。同样,如果您尝试将代码作为图像发布,请不要这样做。它应该是格式化为代码的文本,而不是图像。但最重要的是,不要让我们蒙在鼓里,否则我们帮不了你。

【讨论】:

    【解决方案3】:

    就像 Hovercraft 说的,你需要设置 ImagIcon(String image_name)

    下面的代码将帮助您在 JButton 上嵌入图像。如果你仍然觉得难以融入,请给我留言

    import javax.swing.*;
    import java.awt.*;
    
    public class IconButton{
      public static void main(String[] args){
      JFrame frame = new JFrame("Icon on button");
      JButton button = new JButton("Image button fro Sectona");
      Icon imgicon = new ImageIcon("sectona.gif");
      JPanel panel = new JPanel();
      button.setIcon(imgicon);
      panel.add(button);
      frame.add(panel, BorderLayout.NORTH);
      frame.setSize(400, 400);
      frame.setVisible(true);
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-07-27
      • 1970-01-01
      • 2013-01-07
      • 1970-01-01
      • 2020-10-16
      • 2021-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多