gpt4 book ai didi

swing - 创建玻璃板

转载 作者:行者123 更新时间:2023-12-04 06:26:25 24 4
gpt4 key购买 nike

我有个问题。我可以在体 MousePressed 中创建玻璃板吗?如果是的话,有人可以给我写信吗?我的意思是我按下鼠标按钮,玻璃板是可见的,我可以在他身上作画。

编辑

好的,我现在有了我想要的。当我单击鼠标按钮时,我的玻璃 Pane 正在创建,当我释放此按钮时,它会消失。现在我还有一个问题。我应该在哪里创建我的绘画方法。我想使用鼠标拖动在这个玻璃 Pane 上绘制矩形。我必须在哪里实现paint方法?在其他类(class)还是在本次事件中?我实现了一个我的尝试绘画功能,但我不知道这是否是好方法。这是我的代码:

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();
}

}

最佳答案

您好check out my answer to some other question在那里我提出了一种可以使用玻璃 Pane 来模拟对话行为的方法。在那里你已经展示了如何在我的情况下鼠标右键单击时显示和隐藏它。这个例子应该能让你很好地开始。

关于swing - 创建玻璃板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5990113/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com