基本上,我有一个JFrame
顶部颜色标签
需要不时地改变颜色(不到一秒),比如说,他们需要在底部拍摄投射物。底部的playerLabel
需要绕x轴移动,这样才能阻挡镜头。
我的问题是,当我激活SwingWorker
或colalLabels
上的任何线程,以便他们可以拍摄投射物并更改颜色时,我的EDT被阻止,因此我无法移动playLabel
(事件不起作用)。我的意思是它们可以工作,但与此同时,playerLabel
回到原始位置。(EDT被阻止)
我的问题是,我如何将colyLabel
(顶部标签)上的操作与playerLabel
(底部标签)上的操作分开?
如何使彩色标签
发挥作用,并能够移动播放器标签
?基本上,如何解除EDT的封锁,并仍然有或行动。
编辑:
static Point click;
static int thisX;
static int xMoved;
static int x;
static Integer elapsed = 0;
public static void main(String[] args) {
JFrame frame = new JFrame();
SpringLayout sp = new SpringLayout();
frame.setLayout(sp);
JLabel label = new JLabel("This is label");
label.setBorder(BorderFactory.createLineBorder(Color.red));
JLabel timeLabel = new JLabel("Time: ");
frame.add(label);
sp.putConstraint(SpringLayout.NORTH, label, 10, SpringLayout.NORTH, frame);
sp.putConstraint(SpringLayout.WEST, label, 10, SpringLayout.WEST, frame);
frame.add(timeLabel);
sp.putConstraint(SpringLayout.NORTH, timeLabel, 100, SpringLayout.NORTH, frame);
sp.putConstraint(SpringLayout.WEST, timeLabel, 100, SpringLayout.WEST, frame);
frame.setSize(600, 400);
frame.setVisible(true);
Timer t = new Timer(1000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
elapsed++;
timeLabel.setText("Time: " + elapsed);
}
});
label.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
click = e.getPoint();
}
});
label.addMouseMotionListener(new MouseAdapter() {
@Override
public void mouseDragged(MouseEvent e) {
thisX = label.getLocation().x;
xMoved = (thisX + e.getX()) - (thisX + click.x);
x = thisX + xMoved;
label.setLocation(x, label.getLocation().y);
label.repaint();
}
});
t.start();
}
您将无法在有侦听器要移动的标签周围移动。
这是因为您使用的是布局管理器。布局管理器将确定零部件的大小/位置,即使您手动设置了位置。
如果您需要动态移动组件的能力,那么您需要将组件添加到具有空布局的面板中。然后您将负责设置组件的初始大小/位置。
所以我建议你:
基本拖动
部分,了解一个简单的类,该类允许您在面板周围拖动标签
问题内容: 我正在尝试将我的应用拆分为几个文件: 我的第一个猜测是这样做: 这不起作用,然后我发现了这个问题,但是在此解决方案中,我仍然遇到问题,当我运行时,出现类似以下内容: 我对此不太确定,但我担心有关该部分的内容 : 这是我的model1.py文件: 这是我的model3.py文件: 显然可以,但是我收到了评论,如果我尝试执行此操作,则会发生相同的事情: 因此,我应该手动运行alter fo
我正在实现一个KeyEventDispatcher。dispatchKeyEvent()将所有键盘操作传递给外部(Android)设备。将KeyEvents轻松转换为设备提供的协议的一个关键问题是将事件分为两种类型:Unicode事件和“动作事件”(杂项、编辑、导航键-F1、Del、箭头等)。 Java非常方便地告诉用户击键生成的Unicode字符:您只需检查是否,并且保证生成的字符为。无需处理修
上一章我们通过 multiline 插件将多行数据合并进一个事件里,那么反过来,也可以把一行数据,拆分成多个事件。这就是 split 插件。 配置示例 filter { split { field => "message" terminator => "#" } } 运行结果 这个测试中,我们在 intputs/stdin 的终端中输入一行数据:"
本文向大家介绍java实现把一个List集合拆分成多个的操作,包括了java实现把一个List集合拆分成多个的操作的使用技巧和注意事项,需要的朋友参考一下 有些时候我们需要对一批数据进行分批处理, 使用subList方法可以实现对List集合进行固定长度的分割. 输出结果: 补充知识:java将大集合按照固定长度拆分为小集合 我们在使用java中的集合(Collection、List、Set等)的
本文向大家介绍perl几个文件操作例子,包括了perl几个文件操作例子的使用技巧和注意事项,需要的朋友参考一下 perl用的最多的地方就算是文件处理了,下面我就总结了一下perl文件操作的一些东西,并且有具体的例子,通过下面的例子,加强我们对perl文件操作的理解。 删除文件 使用unlinke函数,比如unlink $file, unlink $file1, $file2, $file3 打开文
问题内容: 我有一个在EDT上运行的方法,在其中我想使它在新的(非EDT)线程上执行某些操作。我当前的代码如下: 问题答案: 您可以创建并启动一个新的Java线程,该线程从EDT线程中执行您的方法: