我有一个问题。我可以在身体的MousePressed中创建glasspane吗?如果是的话,任何人都可以写我如何?我的意思是我按下鼠标按钮,玻璃窗格可见,我可以在他身上绘画。创建玻璃板
编辑
好吧我现在有我想要的。当我释放这个按钮时,我的玻璃窗格正在创建,当我点击鼠标按钮并消失时。现在我有另一个问题。我应该在哪里创作我的绘画方法。我想用拖动的鼠标在这个玻璃窗格上绘制矩形。我必须在哪里实施涂料方法?在其他课堂或在这个事件?我实现了一个我的尝试绘图函数,但我不知道这是否是好方法。这是我的代码:
public class Selection extends JPanel
{
static Point startPoint;
public static void GUI()
{
final JFrame frame = new JFrame();
JPanel panel = new JPanel();
JButton button = new JButton("Select");
final JPanel glassPane = new JPanel();
frame.setSize(400, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel.add(button);
glassPane.setOpaque(false);
frame.add(panel);
frame.setGlassPane(glassPane);
glassPane.addMouseListener(new MouseAdapter()
{
@Override
public void mousePressed(MouseEvent e)
{
super.mousePressed(e);
System.out.println("f.getGlassPane() mousePressed");
if(e.getButton() == MouseEvent.BUTTON1)
frame.getGlassPane().setVisible(true);
startPoint=e.getPoint();
Graphics2D g = null;
Graphics2D g2 = (Graphics2D) g;
Rectangle2D rect = new Rectangle2D.Double();
rect.setFrameFromDiagonal(e.getPoint().x, e.getPoint().y,startPoint.x, startPoint.y);
g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5F));
g2.setColor(Color.BLUE);
g2.fill(rect);
g2.draw(rect);
}
});
glassPane.addMouseMotionListener(new MouseMotionListener() {
@Override
public void mouseDragged(MouseEvent e)
{
}
@Override
public void mouseMoved(MouseEvent e) {
// TODO Auto-generated method stub
}
});
frame.addMouseListener(new MouseAdapter()
{
@Override
public void mousePressed(MouseEvent e)
{
super.mousePressed(e);
if(e.getButton() == MouseEvent.BUTTON1)
frame.getGlassPane().setVisible(true);
}
public void mouseReleased(MouseEvent e)
{
frame.getGlassPane().setVisible(false);
}
});
frame.setVisible(true);
}
int x1, x2, y1,y2;
public void paintComponent(Graphics g)
{
Graphics2D g2 = (Graphics2D)g;
g2.drawRect(x1,y1, x2, y2);
}
public static void main(String[] args)
{
GUI();
}
}
你问过之前试过吗? – jfpoilpret 2011-05-13 10:10:26
是的,我认为我必须创建方法,我将实现绘画方法,并在框架中创建玻璃窗格并添加鼠标侦听器。那是好方法? – edi233 2011-05-13 10:14:01
请参阅下面的答案。通常情况下,你会:创建你的框架,添加内容(正常内容:标签,文本字段...),设置一个玻璃窗格并附加一个MouseListener。 – jfpoilpret 2011-05-13 10:17:43