2016-10-08 3 views
0

У меня есть два класса, которые расширяют JFrame. во-первых, я беру данные из одного Jframe и отображая график на другом JFrame, но во втором JFrame он также показывает содержимое первой Jframe. Вот кодПолучение данных другого JFrame при отображении JFrame

class upgma extends JFrame 
{ 
static int width; 
static int height; 
JPanel c; 
int titem; 
volatile boolean called; 
static String finalans; 
upgma() 
{ 
    c = new JPanel(); 
    called = false; 
    JTextField items; 
    JButton init; 
    c.setLayout(null); 
    items=new JTextField(); 
    JLabel ni = new JLabel("Number of items"); 
    ni.setBounds(width/2-95,height/2-50,100,20); 

    items.setBounds(width/2-100,height/2-20,100,20); 
    init = new JButton("Next"); 
    init.setBounds(width/2+15,height/2-20,80,20); 
    init.addActionListener(new ActionListener() 
    { 
     public void actionPerformed(ActionEvent ae) 
     { 
      if(items.getText().isEmpty() || !items.getText().matches("[1-9]?[0-9]*")) 
      { 
       JLabel e=new JLabel("Please Enter VALID Data !! "); 
       e.setBounds(width/2-85,height/2+20,200,20); 
       c.add(e); 
       validate(); 
       repaint(); 
      } 
      else 
       enterData(items); 
     } 
    }); 
    c.add(ni); 
    c.add(items); 
    c.add(init); 

    JScrollPane jScrollPane = new JScrollPane(c); 
    jScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); 
    jScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); 
    getContentPane().add(jScrollPane); 

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
} 
} 

    public static void main(String[] args) 
    { 

    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); 
    width = (int)screenSize.getWidth(); 
    height = (int)screenSize.getHeight()-40; 
    System.out.println(width+""+height); 
    upgma u = new upgma(); 
    u.setSize(width,height); 
    u.setVisible(true); 
    u.setTitle("Unweighted Pair Group Method with Arithmetic Mean"); 

    while(!u.called); 

    u.setVisible(false); 
    u = null; 
    drawing d= new drawing(finalans); 
    d.getRootPane().setOpaque(false); 
    ((JComponent) d.getContentPane()).setOpaque(false); 
    d.setSize(width,height); 
    d.setVisible(true); 
    d.setTitle("Unweighted Pair Group Method with Arithmetic Mean demo"); 
    } 

} 

и другой класс выглядит следующим образом:

class drawing extends JFrame 
{ 
Container c1; 
static int width; 
static int height; 
String data; 

drawing(String temp) 
{ 
    data = temp; 
    c1=getContentPane(); 
    c1.setLayout(null); 

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); 
    width = (int)screenSize.getWidth(); 
    height = (int)screenSize.getHeight()-40; 
} 

public void paint(Graphics g) 
{ 
    super.paint(g); 
    Font font = g.getFont().deriveFont(20.0f); 
    g.setFont(font); 
    if(data.isEmpty()) 
    { 
     JLabel er = new JLabel("Nothing to Show !!"); 
     er.setBounds(width/2-100,height/2,150,40); 
     c1.add(er); 
    } 
    else 
    { 
     int length = data.length();   
     draw(g,data,width/2-length*7,40); 
    } 
} 
} 

и он показывает мне, как это: Дерево печататься здесь .Я распечатав в разрисованным class.That TextFields это показывается первая степень обновления, которая расширяет JFrame. enter image description here

Я не получаю, где я делаю неправильно .. Пожалуйста, помогите ..

ответ

1

Вероятно потому, что вы делаете его прозрачным.

((JComponent) d.getContentPane()).setOpaque(false); 
+0

Но это другой JFrame и два класса r разные. Тем не менее это может создать эту проблему? И я хотел нарисовать JFrame, и я нашел этот код, чтобы рисовать рамку. –

+0

В принципе, установка этого метода является эквивалентом Java: «Я хочу нарисовать это на стекле, а не на куске дерева». Когда вы нажмете на стеклянную панель, вы все равно сможете увидеть, что стоит за ней. –

+0

Итак, если я удалю эту строку, смогу ли я рисовать рамку с использованием того же кода или мне нужно что-либо изменить? @Joe C –

Смежные вопросы