[英]Set a certain area of a canvas to be clickable
我需要一個例子:我有一塊畫布。 它不斷刷新,我想使此畫布的某個區域可點擊,就像畫布的某個矩形區域可點擊,而不是整個畫布一樣。
您可以使用LayerLayout ,可以在彼此之上添加組件
分層窗格是一個Swing容器,它提供了用於定位組件的第三維:深度,也稱為Z順序。 將組件添加到分層窗格時,可以將其深度指定為整數。 數字越高,組件越接近容器內的“頂部”位置。 如果組件重疊,則“較近”的組件將以較低的深度繪制在組件頂部。 在相同深度處的組件之間的關系取決於它們在深度內的位置。
一種簡單的方法是添加透明按鈕,您希望在該按鈕上單擊“背景”:
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
public class APanel extends JPanel{
APanel(){
setPreferredSize(new Dimension(600,400));
setBackground(Color.YELLOW); //panel color to make it distinct
//add button
JButton btn = new JButton();
btn.setPreferredSize(new Dimension(100,30)); //use layout manager to place it where you want
btn.setContentAreaFilled(false);//make btn transparent
btn.setCursor(new Cursor(Cursor.HAND_CURSOR));//change button cursor
//optionally : remove border by btn.setBorder(null);
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("button pressed !");
}
});
add(btn);
}
public static void main(String[] args){
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
JPanel panel = new APanel();
frame.getContentPane().add(panel);
frame.pack();
frame.setVisible(true);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.