[英]Hold graphic screen
在我的程序中,我有一個從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);
}
}
如果整個程序正在關閉(您的問題尚不清楚),那么它是由於您調用了某些方法(例如System.exit())而關閉的。
MainGUI創建GraphDisplay后是否執行其他操作? 如果是這樣,請記住創建面板不會停止當前的執行流程。
GraphDisplay完成后關閉程序的一種干凈方法是編寫一個listenerInterface(帶有一個“ I'm Done”方法),使用MainGUI類實現該接口(以關閉應用程序)並將MainGUI類傳遞給GraphDisplay面板。 然后,當用戶執行所需的操作時,GraphDisplay面板可以調用“ I'm Done”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.