最近我一直在尝试java图形,并决定制作一个可以打印拼贴图像的程序。这个程序的构造函数接受一个图像数组和每个图像将显示的宽度。
import java.awt.*;
import java.awt.image.BufferedImage;
import java.awt.event.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
import javax.swing.*;
public class CollageTest extends JComponent
{
private Image [][] board; //Holds images within it.
private int pixel;//width of image.
public CollageTest(Image x[][], int pixel)
{
board = x;
this.pixel = pixel;
}
public int getPixel()
{
return pixel;
}
public void paint(Graphics g)
{
for (int i = 0; i < board.length; i++)
{
for (int j = 0; j < board[0].length; j++)
{
g.drawImage(board[i][j], (i * pixel) , (j * pixel), pixel, pixel, null);
}
}
}
public static void main(String args[])
{
BufferedImage[][] images = new BufferedImage[20][20];
BufferedImage img = null;
try {
img = ImageIO.read(new File("gorge3.jpg"));
} catch (IOException e) {
}
for (int i = 0; i < images.length; i++)
{
for (int j = 0; j < images[0].length; j++)
{
images[i][j] = img;
}
}
CollageTest test = new CollageTest(images, 20);
JFrame frame = new JFrame("MyCollage");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(test);
frame.setSize(test.getPixel() * images.length,test.getPixel() * images[0].length);
frame.setVisible(true);
test.repaint();
}
}
当我运行程序时,我最初使用以下方法来设置JFrame窗口的大小:
frame.setSize(test.getPixel() * images.length,test.getPixel() * images[0].length);
不幸的是,JFrame确实显示了部分图像。JFrame窗口不够低,无法显示所有窗口。为了再次确认我的数学没有出错,我用下面这行代码进行了测试:
frame.setSize(400, 400);//Math 20 images * 20 pixels = 400 pixels
同样的问题也发生了。直到我使用了下面的一行,整个图像才显示出来:
frame.setSize(400, 437);
所以我的问题是,为什么我的JFrame行为不端,他们是解决它的更好方法吗?
问题在于:
frame.setSize(test.getPixel() * images.length,test.getPixel() * images[0].length);
您正在根据图像大小手动设置帧大小。但是,框架大小需要考虑标题栏和可能的边框。如果标题栏占37个像素,则图像的像素数将减少37个。
我要做的是:
将图像添加到JPanel中。您可以根据图像设置面板的大小。添加包含图像的面板后,pack()
您的JFrame,以便它自己确定JFrame的首选大小。
问题内容: 我试图在不显示JFrame本身的情况下将JFrame渲染到图像。我试过使用这段代码: 然而,当这仅适用的设置。这将导致图像显示在屏幕上,这不是我想要的。我也尝试创建类似这样的东西: 但是,这将显示黑色图像(如上面的代码)。我很确定我所追求的是可能的,问题是我真的找不到如何做。我在使用自定义Swing组件方面的经验非常有限,因此任何信息都会受到赞赏。 谢谢。 问题答案: 这是应该解决问题
我最近编写了一个包含背景图像的系统主页。设置背景后,我创建的按钮无法正确显示。它只是在我使用鼠标并指向按钮的位置后出现的。有人能教我如何解决这个问题吗?谢谢你的帮助。代码如下: 公共类主页扩展JFrame{
路径没错啊,就是在static目录下的 图片啊
问题内容: 最近,我一直在开发此网站,并试图在其中添加超棒的字体图标,以便其可扩展。 问题是他们没有露面。 看一下HTML: 要么 我确实把样式表引用放在了头上。 我不知道为什么他们没有出现。 这里是参考: 好了,这是完整的html: 问题答案: 根据您的参考,您有: 具体来说,就是这个部分。 但是,在您的完整html下是这样的: 您是否尝试过更换与您的全HTML变成这样?
问题内容: 我希望框架的一部分包含JTextArea,但它会完全占据。我无法在此处追踪错误。 问题答案: 默认使用。当您仅将类似的东西添加到组件时,它将添加到的正中间(如果您未指定添加组件的位置),它将占据整个。 您应该使用正确的布局进行调整。
问题内容: 我有点卡住。为什么不做这项工作?我只是收到一条错误消息: java.lang.NoSuchMethodError:主要 线程“主”中的异常 问题答案: main需要是静态的,并且必须具有String []而不是String的参数。 为了解决这个问题,将所有东西都放在构造函数中,例如