- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个 Java 程序,该程序基本上从文件源渲染图像,然后将该图像绘制到面板(位于框架上)上。
现在我能做的就是调用一行代码
printpanel.getGraphics().drawImage(myimage.globalimage, 0,0, null);
其中 myimage
是包含图像的类。
正如你们很多人所知,这只会打印图像 1 次,如果我调整框架大小,图像就会消失。
现在解决这个问题的方法是将行放入 repaint
方法中,但我现在处于 main
方法中,所以我如何访问定义 repaint
方法并在 main
方法中更改它?
谢谢!
================================================== =================================================== ====
我的代码:
主要类(class):
package imagetester;
import java.awt.image.*;
import javax.swing.*;
import javax.imageio.*;
import java.awt.Graphics2D.*;
import java.io.*;
public class Imagetester
{
public static void main(String[] args)
{
JFrame printframe = new JFrame("The drawing frame");
JPanel printpanel = new JPanel();
printframe.setSize(700,700);
printpanel.setSize(700,700);
printframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
printframe.add(printpanel);
printpanel.setVisible(true);
printframe.setVisible(true);
Imageobject myimage = new Imageobject();
try
{
myimage.setImage("word.jpg");
}
catch(IOException e)
{
System.out.println("the image failed!");
}
printpanel.getGraphics().drawImage(myimage.globalimage, 0,0, null);
printpanel.repaint();
System.out.println("hi");
}
}
我的图像类:
package imagetester;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class Imageobject
{
BufferedImage globalimage;
public void setImage(String filename) throws IOException
{
globalimage = ImageIO.read(new File(filename));
}
public void Imagebject()
{
}
}
最佳答案
我不确定我是否完全理解,但如果您想要做的是在窗口内显示带有图像的面板,您应该子类化 JPanel (或您想要的任何其他面板),并重写 PaintComponent 方法绘制图像。大致如下:
public class ImagePanel extends JPanel {
private Image image;
public ImagePanel(Image image) {
this.image = image;
}
@Override
protected void paintComponent(graphics g) {
g.drawImage(image, 0, 0, this);
}
}
关于java - 如何从主程序访问重绘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22328787/
我有一个主程序X,它从我的网络摄像头获取数据。 我想在执行时实时配置 X。 我知道这样做的常见方法之一是使用IPC,如命名管道/Unix套接字/互联网套接字等。但我想避免每个调用者必须单独打开套接字/
信号可以在任何线程或主程序本身中接收。我从主程序创建了一个辅助线程。所以我的程序中有两个线程 1. 主线程(进程本身) 2. 辅助线程。我只希望每当信号到达我的辅助线程时,它应该向我的主线程(程序)发
我在 java 中有一个主类,它调用 JFrame Two。 但在调用 JFrame Two 之前,我的主要检查一个条件,如果为真,则调用 JFrame One。 所以,我的 main 不扩展 JFr
我正在尝试编译一个 C++ 程序,但它不起作用。首先,我应该说 c++ 不是我真正了解的语言,我使用 Fortran。无论如何,主要的 c++ 程序调用一个 fortran 子例程。我可以编译这个子例
我正在尝试将 Rust 绑定(bind)到 nbdkit,但运气不佳。我需要制作一个 .so 文件,这很简单。 .so 文件必须有一个名为 plugin_init 的公共(public)函数,这也很简
QT 似乎是最好的跨平台 GUI 工具包。不幸的是,它是在 C++ 中,它与许多有趣的语言(例如 *nix 上的 D、Rust、Julia 和 Mono)的绑定(bind)要么不可用,要么没有维护。
我有一个 Maven 项目,它在 src 文件夹中的一个包中有 2 个主程序(MyTestApp_A 和 MyTestApp_B)。 如果我打开它们并单击运行按钮,我可以在 Eclipse 中运行这些
我是一名优秀的程序员,十分优秀!