小编Adi*_*ith的帖子

在BufferedImage中绘制多条线

我试图在bufferedimage上绘制水平和垂直线条.它应该看起来像一个细胞网格.但是当我运行代码时,我只看到两行:最左边的行和最上面的行(即从0,0到0的行,图像的高度和0,0到图像的宽度,0)下面是代码片段:

  BufferedImage mazeImage = new BufferedImage(imgDim.width, imgDim.height, BufferedImage.TYPE_INT_RGB);
  Graphics2D g2d = mazeImage.createGraphics();
  g2d.setBackground(Color.WHITE);
  g2d.fillRect(0, 0, imgDim.width, imgDim.height);
  g2d.setColor(Color.BLACK);
  BasicStroke bs = new BasicStroke(2);
  g2d.setStroke(bs);
  // draw the black vertical and horizontal lines
  for(int i=0;i<21;i++){
   g2d.drawLine((imgDim.width+2)*i, 0, (imgDim.width+2)*i,  imgDim.height-1);
   g2d.drawLine(0, (imgDim.height+2)*i, imgDim.width-1, (imgDim.height+2)*i);
  }
Run Code Online (Sandbox Code Playgroud)

和覆盖绘制方法:

public void paint(Graphics g) {
  g.drawImage(mazeImage, 0, 0, this);
}
Run Code Online (Sandbox Code Playgroud)

这是一个名为RobotMaze的类,它扩展了JPanel.任何帮助表示赞赏.

java swing drawing bufferedimage lines

7
推荐指数
1
解决办法
2万
查看次数

java swing中的setvisible方法挂起系统

我有正在处理的银行gui应用程序,我的jdialog的setvisible方法似乎有问题.在用户撤回有效金额后,我弹出一个简单的对话框,其中显示"正在进行交易".在我的dobackground方法中,我继续轮询以检查是否已收到交易.我尝试使用swingworker,我不明白为什么它不起作用.如果我删除setvisible调用它工作正常,那么为什么setvisible导致系统挂起?这是我的jbutton mouselistener中的代码:

SwingWorker<String,Integer> worker = new SwingWorker<String,Integer>(){

  JDialog waitForTrans = new JDialog((JFrame)null,true);
  public String doInBackground() throws Exception {
     waitForTrans.add(new JLabel("Updating balance in system. Please Wait..."));
     waitForTrans.setMinimumSize(new Dimension(300,100));
     waitForTrans.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
     waitForTrans.setVisible(true);
     Bank.getInstance().sendTransaction(currentPin,"-"+withdraw);
     while(!Bank.getInstance().hasCompletedTransaction){

     }
     return null;

  }

  public void done(){
   try {
        this.get();
       } catch (InterruptedException e) {
        e.printStackTrace();
    } catch (ExecutionException e) {

        e.printStackTrace();
    }
    waitForTrans.setVisible(false);
    newField.setText(String.valueOf(Bank.getInstance().getAccountList().get(currentPin).getBalance()));
  }

 };
 worker.execute();
Run Code Online (Sandbox Code Playgroud)

java swing visibility swingworker

6
推荐指数
2
解决办法
1万
查看次数

标签 统计

java ×2

swing ×2

bufferedimage ×1

drawing ×1

lines ×1

swingworker ×1

visibility ×1