我把图片作为JLabel
而我想要做的是当我点击JLabel
时,会出现另一个Jlabel
的矩形形式。如何创建一个JPanel矩形?
我尝试使用paintComponent
或paint
,不幸的是,它不适用于我的程序。所以我必须认为除paintComponent
和/或paint
之外还有其他方法。
目的是标记图像的某个部分的名称,如在Facebook中。
我把图片作为JLabel
而我想要做的是当我点击JLabel
时,会出现另一个Jlabel
的矩形形式。如何创建一个JPanel矩形?
我尝试使用paintComponent
或paint
,不幸的是,它不适用于我的程序。所以我必须认为除paintComponent
和/或paint
之外还有其他方法。
目的是标记图像的某个部分的名称,如在Facebook中。
哇。
基于问题的佩斯的描述,你将不得不做以下的(我认为):
图片将直接在一个JPanel画。当有人点击图片时,可以通过JPanel动作侦听器获得鼠标的x和y坐标。
然后,您将创建一个带有边框,名称文本框和确定按钮的透明JPanel的JDialog。 (也可以把所有东西放在一个对话窗口中。)JDialog将是可移动的,但是你将不得不创建一个JDialog监听器来跟踪左上边或者左上边的x和y坐标JDialog中的透明JPanel。
JDialog JPanel实际上并不透明。您必须通过记录图片JPanel上的JDialog JPanel的位置并将图片的JPanel部分复制到JDialog JPanel来创建透明度幻觉。
与使JDialog正常工作相比,其余部分应该相当简单。
编辑添加:这是JPanel的扩展,它将直接在JPanel上绘制图片并处理鼠标按下的事件。
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.MouseEvent;
import javax.swing.JPanel;
import javax.swing.event.MouseInputAdapter;
public class PicturePanel extends JPanel {
private static final long serialVersionUID = 1L;
protected Image picture;
public PicturePanel(Image picture) {
this.picture = picture;
createPartControl();
}
protected void createPartControl() {
new JPanel();
int width = picture.getWidth(getParent());
int height = picture.getHeight(getParent());
addMouseListener(new CoordinateListener());
setPreferredSize(new Dimension(width, height));
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
int width = picture.getWidth(getParent());
int height = picture.getHeight(getParent());
g.drawImage(picture, 0, 0, width, height, null);
}
public class CoordinateListener extends MouseInputAdapter {
@Override
public void mousePressed(MouseEvent event) {
int x = event.getX();
int y = event.getY();
System.out.println("(" + x + ", " + y + ")");
}
}
}
谢谢你的回应,问题是,paintComponent不适用于我的程序。这就是为什么我诉诸使用JLabel的形象。 – javaBeginner
@javaBeginner:编辑我的答案,为您提供绘制图片的JPanel的骨架。 –
这里的最终用例是什么?这实现了什么功能?我倾向于使用未装饰的'JButton'来保存'Image'。至于如何使'矩形'出现,我需要知道这是什么,以提供最好的建议。 –
就像在Facebook中,当我点击我想要一个矩形出现。当你说你使用了未装饰的JButton时,这是否意味着按钮的矩形中有一个矩形孔? – javaBeginner
*“就像在Facebook ..”*我不使用Facebook。 **它提供的功能是什么? *“是否意味着按钮的矩形中有一个矩形孔?”*我的意思是按钮中的图像,而不是*“作为JLabel的图片......单击JLabel”*。 –