我创建了一个在屏幕上随机位置生成图像(JLabel)的游戏。单击时,图像会在不同的随机位置生成。我现在计划在屏幕上也有文字。我正在使用JTextField这样做。问题是尽管JTextField //My api.php routes
Route::get('/cities/{country_id}', function (Request $request, $country_id) {
$cities=App\City::where('country_id', $country_id)->get()->pluck('name','id');
return $cities;
});
//My blade file
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div id="events">
<div class="panel panel-default">
<div class="panel-heading">Select cities by country</div>
<div class="panel-body">
{!! Form::open() !!}
{!! Form::select('country', $countries, null, ['v-model'=>'country', '@change'=>'WhenCountryHasBeenSelected' ,'class'=>'form-control']) !!}
<div v-show="CountrySelected">
{!! Form::select('city',$cities, null, ['class'=>'form-control']) !!}
{!! Form::close() !!}
Selected @{{ $data | json }}
</div>
</div>
</div>
</div>
</div>
</div>
@endsection
使用与JLabel msg
相同的方法添加,但它并未出现。有人可以解释为什么它不会在JFrame中产生吗?
BoxGame:
box
窗口:
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Random;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
@SuppressWarnings("serial")
public class BoxGame02 extends JFrame {
static JLabel box = new JLabel();
static JTextField msg = new JTextField();
static int min = 2;
static int max = 350;
static Random random = new Random();
static int rand1 = min + random.nextInt(max - min + 1);
static int rand2 = min + random.nextInt(max - min + 1);
static int randMessage = 1 + random.nextInt(10 - 1 + 1);
public BoxGame02() {
super("Click the Box!");
setLayout(null);
ImageIcon icon = new ImageIcon("C:/Users/btayl/JavaProjects/Java Game Development/Box Game/BoxGame02/Images/face.png");
box.setIcon(icon);
box.setSize(50,50);
box.setLocation(rand1, rand2);
add(box);
msg.setText("Text on Screen");
msg.setLocation(10, 200);
add(msg);
box.setName("box");
BoxListener clickBox = new BoxListener();
box.addMouseListener(clickBox);
}
class BoxListener extends MouseAdapter {
public void mouseClicked(MouseEvent e) {
JLabel l = (JLabel) e.getSource();
if(l.getName().equals("box"))
moveBox();
}
}
public void moveBox() {
System.out.println("Testing!");
rand1 = min + random.nextInt(max - min + 1);
rand2 = min + random.nextInt(max - min + 1);
randMessage = 1 + random.nextInt(10 - 1 + 1);
box.setLocation(rand1, rand2);
add(box);
revalidate();
repaint();
}
}
答案 0 :(得分:3)
尽管使用与JLabel框相同的方法添加了JTextField消息,但它没有出现。
不,您没有使用与标签相同的方法。再仔细看看你的代码。
您在JLabel上使用了哪些方法?
现在比较用于JTextField的方法,看看有什么区别。
在“moveBox()”方法中,您无需继续将该框添加到面板中。您只需添加一次该框。然后你可以简单地改变它的位置。
您不应该使用静态变量。变量应该是类的实例变量。