java - 如何解决应用程序中的 Java JLabel 问题?

标签 java swing

我对 Java 还很陌生。我决定编写井字游戏代码作为练习(从头开始)。

无论如何,我试图在单击时更改“JLabel 标签”;从1,然后2,等等。最终,它会变成数字以外的东西。但是,目前,它适用于测试。

'System.out.println("点击次数:"+ mouseIn);'工作正常,并产生我想要的输出。控制台和 JFrame/JPanel/JLabel 的图片可以在这里看到:

image

(JFrame中的小1是JLabel。我想匹配控制台中的输出。

我已经用谷歌搜索,搜索,并尝试了我所知道的一切(这并不多!),但我无法让这该死的东西发挥作用......我只是寻求一些指导。 Main方法只包括JFrame/Panel的构建。

代码如下:

来自主类,称为(namone.java [将其命名为我自己的原因]):

  public void run(JPanel p) //Takes panel from main method {
           
    for(int i = 0; i < ticList.length; i++){
        ticList[i] = new JButton(buttonText); //For every position in
        //ticList[], create a JButton object
       
        
        p.add(ticList[i]);
        ticList[i].setPreferredSize(new Dimension(140,140));
        
        ticList[i].addMouseListener(mouse); //Load mouseListner
        
    } 
    //Set mouseIn to click value in MouseEvents Class
    int mouseIn = mouse.getClicks();
    //Set text value to text value in MouseEvents class
    text = mouse.getText();
    
    //Output...
    
    System.out.println("Number of clicks: " + mouseIn); //For testing
    String mouse = Integer.toString(mouseIn); //Convert mouseIn value (from MouseEvents.java) to mouse
    JLabel label = new JLabel(); //New JLabel
    p.add(label); //Add label to screen
    label.setText(mouse); //Set the text of the label to value of mouse
    System.out.println(mouse); //For testing
    //So I can see if it's working (clicks wise)
    
    
   
    
}

然后是我的 MouseEvents.java 类中的代码:

public class MouseEvents extends namone implements MouseListener {

int clicks = 1;
String text = "first"; //For testing purposes
public namone game = new namone();

public int getClicks(){
    return clicks;
}

public String getText(){
    return text;
}

public int intToString(){
    Integer.toString(clicks);
    return clicks;
}

@Override
public void mouseClicked(MouseEvent e) {
    clicks++;
    intToString();     
    
    JPanel p = new JPanel();
    
    text = "" + clicks;       
    game.run(p);
    
    
}
正如我所说。我对 Java 很陌生,我正在尝试学习如何用它开发应用程序。我确信这是我自己的无知造成的。

谢谢。

最佳答案

假设 mouse 是您编写的 MouseEvents 类型,一种可能性是您需要将 mouse.getText() 传递给对 label 的调用。 setText(.)

无论如何,你设置游戏的方式对我来说有点奇怪。每次有人点击时创建一个全新的 JPanel 的原因是什么?为什么不维护原来的 JPanel 并更新它呢。我个人会将一个自定义的 ActionListener 附加到每个 JButton,每次单击按钮时都会运行一些代码。如果这个ActionListener是一个内部类,它还可以查看JButton定义范围内的变量。

关于java - 如何解决应用程序中的 Java JLabel 问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25368339/

相关文章:

java - java中固定小数位 double 和十的幂格式

java - 如何在 Apache Spark Java 中将 JavaRDD<Row> 转换为 JavaRDD<String>

java - 自动调整 JButton 的大小和纵横比

Java JDBC resultSet.下期

java - 使用 'mvn spring-boot:run' 时出错;但不适用于 java -jar 或 intelliJ

java - 在哪里可以找到 Neo4j 3.0.0 服务器的错误日志

java - 我必须调整 JFrame 的大小才能显示内容。我该如何解决?

java - 让jbutton打开和关闭

java - NetBeans JButton 中的 JFreeChart 拨号

java - GridLayout 面板上的面板