gpt4 book ai didi

java - 在 java 中画线后 ActionListener 无法正常工作

转载 作者:行者123 更新时间:2023-11-29 03:53:14 25 4
gpt4 key购买 nike

画线后 Action 监听器出现问题,基本上它只工作一次,例如,我的应用程序正在下载图像,然后你选择两个点,第一个用鼠标左键,第二个用鼠标右键,比你点击“连接点”按钮,它正在画一条线。这行得通,我可以用很多行等来完成。但是当我关闭一个带有图像的窗口并重新加载它时,“连接点”按钮停止工作。 Dk 用它做什么。这是代码:

画线部分:

public void paint(Graphics g) {

super.paint(g);
myPaint(g);
}

private void myPaint(Graphics g) {
g.drawLine(lx1, ly1, px2, py2);
}
}

ActionListener部分:

public void actionPerformed(ActionEvent e) {

if(e.getSource()==painterka){

Graphics g = imadzysko.getGraphics();
paint(g);
lx1=0;
ly1=0;
px2=0;
py2=0;
}
}

带有图形部分的面板:

void diagramKY (JFrame windower, String tyt, String content) {
Listener listener = new Listener();

panelik.setLayout(null);
painterka = new JButton("Connect Points");
windower = new JFrame("");
windower.setTitle(tyt+" - diagram");
windower.setSize(800, 600);
windower.setVisible(true);
windower.setLocationRelativeTo(null);
URLdownloader.fileUrl("http://stooq.pl/c/?s="+content+"&c=1d&t=l&a=lg",
content+".png","");
imadzysko = new ImagePanel(new ImageIcon(content+".png").getImage());
panelik.add(imadzysko);
panelik.add(painterka);
imadzysko.addMouseListener(new MyMouseListener());
painterka.addActionListener(listener);
Insets insets = panelik.getInsets();
Dimension size = imadzysko.getPreferredSize();
imadzysko.setBounds(20 + insets.left, 20 + insets.top,
size.width, size.height);
size = painterka.getPreferredSize();
painterka.setBounds(630 + insets.left, 20 + insets.top,
size.width, size.height);
panelik.repaint();
imadzysko.repaint();
windower.add(panelik);

嗯,有什么建议吗? :)

最佳答案

1) 创建面板,将其放入 GUI,最后一行代码为

windower.setLocationRelativeTo(null);
windower.setVisible(true);

否则你的面板永远不会出现在屏幕上

2) 不要使用 setBounds() 等,因为存在 LayoutManagers

windower.add(panel);

然后你的面板填满整个 JFrame 区域

3) 切勿在 Swing 代码中使用 paint(Graphics g),仅使用 paintComponent(Graphics g) 以避免意外输出到 GUI

4) 不要创建新的Top-level Containers在运行时,弹出窗口只创建一个 JDialog 或 JWindow 并将其重新用于另一个 Action

5) 你有问题 Concurency in Swing ,您的 GUI 卡住,因为等待硬而长时间的代码,实现 SwingWorker , 有类似的例子

6) 如果你想显示一些图片或图像寻找Icon放在JLabel

7) 确实需要阅读 2D Graphics在此处发布问题之前的教程

关于java - 在 java 中画线后 ActionListener 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7783460/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com