在图像顶部放置一个隐形按钮

时间:2016-06-09 03:19:32

标签: java jbutton

我正在制作一个小型的Java游戏,以便用我的GUI编程练习。我希望我的内容窗格的borderLayout的中心是一个图像,我想在特定的地方放置图像顶部的“隐形”按钮(稍后放置,我只是想让一个人现在工作)。我的问题是让按钮实际上是不可见的,它似乎留下了现在的白色方块。我环顾四周,但似乎唯一建议的是.setOpaque,.setContentAreaFilled和.setBorderPainted。 (游戏与空间有关,解释名称)

                galaxyButton1 = new JButton();
                galaxyButton1.setFont(starSystem);
                galaxyButton1.setBorder(BorderFactory.createEmptyBorder(25,25,25,25) );
                galaxyButton1.setOpaque(false);
                galaxyButton1.setContentAreaFilled(false);
                galaxyButton1.setBorderPainted(false);
                Color invis = new Color(Color.TRANSLUCENT);
                galaxyButton1.setForeground(invis);
                galaxyButton1.setBackground(invis);
                galaxyButton1.addActionListener( new ButtonHandler() );
                JPanel centerPanel = new JPanel();
                centerPanel.setLayout(new BorderLayout());
                JPanel buttons = new JPanel();
                buttons.setLayout(new GridLayout( 1,0,5,5 ) );
                buttons.setOpaque(false);
                buttons.add(galaxyButton1);
                centerPanel.add(buttons,BorderLayout.CENTER);
                centerImg.setLayout(new GridBagLayout());
                centerImg.add(centerPanel);
                contentPane.add(centerImg, BorderLayout.CENTER);

1 个答案:

答案 0 :(得分:0)

以下是如何制作自己的按钮的代码大纲。您需要在其他类中设置实际鼠标。

 public class InvisibleButton implements MouseListener{

    private final Rectangle rectangle;

    public InvisibleButton(int x, int y, int width, int height){
        rectangle = new Rectangle(x,y,width,height);
    }

    @Override
    public void mouseClicked(MouseEvent e) {
        int x = 0; // Set this to Mouse X
        int y = 0; // Set this to Mouse Y
        if(rectangle.contains(x,y)){
            //Set Something to True or do action here
        }
    }

    @Override
    public void mousePressed(MouseEvent e) {

    }

    @Override
    public void mouseReleased(MouseEvent e) {

    }

    @Override
    public void mouseEntered(MouseEvent e) {

    }

    @Override
    public void mouseExited(MouseEvent e) {

    }
}