我正在尝试获取以下代码以显示info_panel中的坐标,但它无法正常工作。如何从SimpleFrameViewWidget中获取mouseListener的坐标以显示在info_panel中?我现在正在使用setText ...谢谢!
public static void main(String[] args) throws IOException {
Frame f = A7Helper.readFromURL("http://www.cs.unc.edu/~kmp/kmp.jpg");
f.setTitle("");
SimpleFrameViewWidget simple_widget = new SimpleFrameViewWidget(f);
JFrame main_frame = new JFrame();
main_frame.setTitle("Assignment 7 Pixel Inspector");
main_frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel top_panel = new JPanel();
top_panel.setLayout(new BorderLayout());
top_panel.add(simple_widget, BorderLayout.CENTER);
main_frame.setContentPane(top_panel);
JPanel info_panel = new JPanel();
info_panel.setLayout(new BorderLayout());
top_panel.add(info_panel, BorderLayout.SOUTH);
JLabel x_label = new JLabel("");
x_label.setHorizontalAlignment(SwingConstants.CENTER);
x_label.addMouseListener(simple_widget);
x_label.setText(simple_widget.getStringInfo());
info_panel.add(x_label);
main_frame.setContentPane(top_panel);
main_frame.pack();
main_frame.setVisible(true);
}
这是包含mouseListener和mouseClick的代码。提前谢谢!
public class SimpleFrameViewWidget extends JPanel implements MouseListener {
private FrameView frame_view;
private String stringInfo;
public SimpleFrameViewWidget(Frame f) {
setLayout(new BorderLayout());
frame_view = new FrameView(f);
frame_view.addMouseListener(this);
add(frame_view, BorderLayout.CENTER);
JLabel title_label = new JLabel(f.getTitle());
add(title_label, BorderLayout.SOUTH);
}
@Override
public void mouseClicked(MouseEvent e) {
int x = e.getX();
int y = e.getY();
stringInfo = "X: " + x + "Y: " + y;
}
public String getStringInfo(){
return stringInfo;
}
答案 0 :(得分:0)
将另一个MouseListener
注册到SimpleFrameViewWidget
只需将结果直接提供给info_panel
或让info_panel
为您完成所有操作....