我需要一个这样的例子: 我有一块帆布。它不断刷新,我想让这个画布的一个区域可以点击,就像画布的某个矩形区域可点击,但不是整个画布。
答案 0 :(得分:2)
您可以使用LayerLayout,您可以将组件添加到彼此之上
分层窗格是提供第三维的Swing容器 用于定位组件:深度,也称为Z顺序。添加时 如果是分层窗格的组件,则将其深度指定为整数。 数字越大,组件越接近"顶部"位置 在容器内。如果组件重叠,那么"更接近"组件 被绘制在较低深度的组件之上。关系 在相同深度的组件之间由它们的位置确定 在深度内。
答案 1 :(得分:2)
一种简单的方法是添加透明按钮,你想要"背景"可点击:
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);
}
}