Java JLabel不工作
我对Java还很陌生。我决定将tic-tac-toe编码为练习(从头开始) 无论如何,我试图在单击时更改“JLabel标签”;从1开始,然后是2,等等。最终它会变成数字以外的东西。但是,就目前而言,它适用于测试 “System.out.println”(“点击次数:“+mouseIn”);”工作正常,并产生我想要的输出。控制台和JFrame/JPanel/JLabel的图片可以在这里看到: (JFrame中的小1是JLabel。我想匹配控制台中的输出 我已经在谷歌上搜索了,尝试了所有我知道的东西(这并不多!),但我无法让这个该死的东西发挥作用……我只是想寻求一些指导。主要的方法只是构建JFrame/Panel 代码如下: 从名为(namone.java[出于我自己的原因将其命名为这个])的主类: 就像我说的。对Java非常陌生;我正在努力学习。我相信这是我自己的无知造成的Java JLabel不工作,java,swing,Java,Swing,我对Java还很陌生。我决定将tic-tac-toe编码为练习(从头开始) 无论如何,我试图在单击时更改“JLabel标签”;从1开始,然后是2,等等。最终它会变成数字以外的东西。但是,就目前而言,它适用于测试 “System.out.println”(“点击次数:“+mouseIn”);”工作正常,并产生我想要的输出。控制台和JFrame/JPanel/JLabel的图片可以在这里看到: (JFrame中的小1是JLabel。我想匹配控制台中的输出 我已经在谷歌上搜索了,尝试了所有我知道的东
谢谢。假设
mouse
是您编写的MouseEvents类型,一种可能是您需要将mouse.getText()
传递给调用label.setText(.)
无论如何,你设置游戏的方式对我来说有点奇怪。为什么每次有人点击时都要创建一个全新的
JPanel
?为什么不保留原来的JPanel并更新它呢?我个人会在每次点击按钮时运行一些代码的每个JButton上附加一个自定义ActionListener。如果Listener是一个内部类,它还可以查看JButton定义范围内的变量。我无法让dang工作不是一个好问题。请尝试调试器。我需要一些指导。除了学习使用调试器外,还可以创建一个专注于单个按钮和标签的调试器。添加标签后尝试重新绘制面板panel.revalidate();panel.repaint();
@Khinsu-OP的问题是他从不调用setText
来更新标签中的文本。与重新绘制无关。这很有效!谢谢。
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)
}
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);
}