gpt4 book ai didi

java - 在扩展 JFrame 的类中的另一个 JFrame 上绘制一条线

转载 作者:行者123 更新时间:2023-12-02 07:46:29 25 4
gpt4 key购买 nike

我有一个包含两个 JFrame 的类,并且正在尝试在特定框架上画一条线。

我尝试了下面的代码,但它只出现在第一帧,即成功帧中。

它还出现在成功框架的所有其他组件之上,从而使所有其他组件都高于

组件不可见。它不会出现在合成框架中。

我该如何纠正这个问题。

这是我到目前为止的代码:

import javax.swing.*;
import java.awt.*;
import java.awt.geom.*;
import java.awt.event.*;

public class lineGUI{
public static void main(String []args){
Success s=new Success();
s.setVisible(true);
}
}

class Success extends JFrame{

JPanel alas =new JPanel();
JFrame comp =new JFrame();
public Success(){
JPanel panel=new JPanel();
getContentPane().add(panel);
setSize(450,450);

JButton button =new JButton("press");
panel.add(button);

comp.setSize(650,500);
comp.setTitle("View Report");

JRootPane compPane=comp.getRootPane();
Container contePane=compPane.getContentPane();
contePane.add(alas);


ActionListener action =new ActionListener(){
public void actionPerformed(ActionEvent e){
if (e.getSource()==button){
comp.setVisible(true);
}
}
};
button.addActionListener(action);

JButton button2=new JButton("access");
alas.add(button2);
}

public void paint(Graphics g) {
comp.paint(g);
Graphics2D g2 = (Graphics2D) g;
Line2D lin = new Line2D.Float(100, 100, 250, 260);
g2.draw(lin);
}
}

最佳答案

你那里有一些疯狂的代码。建议:

  • 不要直接在 JFrame 中绘制,而是在从 JComponent 派生的对象(例如 JPanel 或 JComponent 本身)的 PaintComponent 方法中绘制。
  • 直接在另一个组件的 Paint(...) 方法中进行绘图根本不符合规范。为什么不简单地在类之间共享数据,并使用数据(整数)在需要的地方进行绘制。
  • 您很少希望 GUI 一次显示多个 JFrame。通常一个窗口是主窗口(JFrame),并且它通常拥有任何其他窗口,这些窗口将是对话框窗口,例如 JDialogs。
  • 阅读图形教程,了解制作 Swing Graphics 的正确方法

关于java - 在扩展 JFrame 的类中的另一个 JFrame 上绘制一条线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10769398/

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