我有一個問題。我可以在身體的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