在我的程序中,我有一个从 JPanel 扩展的类 GraphDisplay ,用于创建图形...在其构造函数中,我有一个函数 display() ,它创建我想要的所有内容,包括用于收听的按钮...
在其他一些类MainGUI
中,我在用户进行对话框操作后创建了上述类的对象,发生的情况是上述类对象被创建并在消失之前显示几分之一秒。 ...
有没有一种方法可以告诉 MainGUI
等待上面对象的输入而不是关闭......
GraphDisplay 是这样的......
public class GraphDisplay extends JPanel {
private static final long serialVersionUID = 1L;
GraphDisplay(String source , String destination , List<Node> nodes , List<GUIEdge> edges , List<GUIEdge> spanedges)
{
//assigning values
this.display();
}
public void display() {
frame1 = new JFrame();
frame1.setSize(400,400);
frame1.setVisible(true);
frame1.setLayout(new FlowLayout(FlowLayout.LEFT));
frame1.setBackground(Color.lightGray);
frame1.repaint();
JButton next = new JButton("NEXT");
next.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
System.out.println("Hello");
}
});
}
public void paintComponent(Graphics g) {
//does some painting
}
谢谢
最佳答案
如果您想在 JPanel
上绘制内容,您应该重写 paintComponent(Graphics)
方法。每次 JPanel 需要绘制自身时都会自动调用它。
@Override
public paintComponent(Graphics g){
super.paintComponent(g);
g.drawLine(...);
g.drawOval(...);
/*Other stuff*/
}
<小时/>
您正在 JPanel 中创建 JFrame。我可以给你的最基本的例子如下,我想你可以看到问题:
public class Test extends JFrame{
public static void main(String[] args){
JFrame frame = new JFrame();
MyPanel myPanel = new MyPanel();
frame.add(myPanel);
frame.pack();
frame.setVisible(true);
}
}
class MyPanel extends JPanel{
@Override
public void paintComponent(Graphics g){
g.drawLine(10, 10, 100, 100);
}
}
关于java - 保持图形屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5391782/