小编Har*_*dhu的帖子

Java找到我点击的图像?

场景:我有一个JFrameJPanel添加到其中JFrame.在这个面板上,我使用了以下三个图像:

public void paint(graphics g) { 
     g.drawImage(img1,100,100,null);
     g.drawImage(img2,200,200,null);
     g.drawImage(img3,300,300,null);
}
Run Code Online (Sandbox Code Playgroud)

我已经实现MouseListener了监听点击的界面.现在,我希望每当我点击任何这些图像时,我的输出(在命令提示符下使用System.out.println();)应该是我点击的图像对象?

请解释一下我有可能,怎么样?

java swing image jpanel mouseevent

4
推荐指数
1
解决办法
3977
查看次数

JButton()只在鼠标悬停时才有效

    import java.awt.*;
    import java.awt.image.*;
    import java.awt.event.*;
    import javax.imageio.*;
    import java.lang.*;
    import java.io.*;
    import javax.swing.*;
    public class MainClass extends Component{
       private Image bg;
       private ImageIcon newgame;
       private ImageIcon quit;
       private ImageIcon options;
       private JButton bquit;
       private JButton boptions;
       private JButton bnewgame;
       private static Container pane; //Container

    public void loadImage() {
        try {
            bg=ImageIO.read(new File("bg1.png"));
        } catch (Exception e) {
        }
        if(bg!=null)
            repaint();

    }
    public void paint(Graphics g) {
        g.drawImage(bg,0,0,null);
    }
    public void imageButtons(JFrame f) {
        try {
            quit= new ImageIcon("quit.png");
            options=new …
Run Code Online (Sandbox Code Playgroud)

java swing mouseevent jbutton null-layout-manager

2
推荐指数
2
解决办法
4439
查看次数

CompletableFuture.thenAccept中使用的垃圾收集对象的可用性

我试图从使用的方法执行异步调用CompletableFuture.完成该任务后,我试图打印对象DummyObject的值,这些对象是调用异步调用的方法的本地对象.

我想知道它是如何工作的?thread(myThread)在3秒后死亡,DummyObject超出范围,thenAccept中的Async回调仍然打印正确的值.线程是否在DummyObject上获得锁定?或者其他事情正在发生?

请注意,我只是想模拟一个场景.所以我正在使用Thread.stop().

编辑 - 问题是关于thenAccept Consumer如何处理范围?请保持与此相关的答案.

以下计划的输出:

Starting Async stuff
Thread Alive?  false
Reached Main end and waiting for 8 more seconds
James T. Kirk
United Federation of Planets
Run Code Online (Sandbox Code Playgroud)

AsyncTest.java

public class AsyncTest {

    public static void main(String args[]) {

        Thread myThread = new Thread() {
            @Override
            public void run() {
                DummyObject dummyObj = new DummyObject();
                dummyObj.setObjectName("James T. Kirk");
                dummyObj.setObjectNationality("United Federation of Planets");
                System.out.println("Starting Async stuff");
                new AsyncTaskExecuter().executeAsync().thenAccept(taskStatus -> {
                    if(taskStatus.booleanValue()) {
                        System.out.println(dummyObj.getObjectName()); …
Run Code Online (Sandbox Code Playgroud)

java concurrency asynchronous java-8 completable-future

1
推荐指数
1
解决办法
467
查看次数