想做一个图片浏览,用JLabel包装图片,然后在JPanel上显示。
但问题是取到JLabel后,如何设置图片的高亮和焦点,然后可以使用键盘方向键浏览图片?
初步的想法是用JLabel的坐标来判断图片在JPanel的位置,如何得到每个JLabel相对于JPanel的位置(x,y)呢?
简单的代码如下:public TestPanel extends JPanel {
 
    public TestPanel(JLabel[] labels){
        setLayout(new GridLayout(2, 3);
        for (int i=0; i<labels.length; i<++) {
            JLabel label = labels[i];
            add(label);            // ...
        }
    }
}请教大家,谢谢。

解决方案 »

  1.   

    1 得到JLabel的位置,可以用getLocation().
    2 代码中直接指定GridLayout(2, 3);  row和col并不是一种好的practice.
    3 Swing中并没有你要求的高亮效果,但是你可以通过改变一些界面元素来达到你想要的效果,如果其他的开发工具或者语言包可以直接设置,那也是工具或开发包的开发者已经帮你做了这些事情。
    4 键盘的响应需要你实现相应的InputMap,实际上也是一种监听和Callback机制,只不过监听的是键盘不同按键的Keystroke而已。当你收到键盘Event以后,需要正确的改变和设置当前被选择的JLabel和它的外观。all right. try it
      

  2.   

    但问题是取到JLabel后,如何设置图片的高亮和焦点, 
    //可以设置JLabel的边框属性.
    //如:setBorder(new LineBorder(new Color(0,0,255),2,true));然后可以使用键盘方向键浏览图片? 
    //你可以为JLabel写一个事件类实现KeyListener接口.
    //如: key  implements KeyListener
    public key(JLabel label){
    }// 在keyPressed(KeyEvent keyEvent)方法中实现方向键浏览图片
    // 按方向键时设置label的边框属性JLabel label = labels[i];
              //注册事件 如:new key(label);
                add(label);