2016-12-26 6 views
0

코드를 실행할 때 빈 프레임 만 있습니다. JButton과 JTextField를보기 위해서는 검색하고 클릭해야 볼 수 있습니다. 나는 인터넷에서 사방을 수색했지만 아무 것도 발견하지 못했습니다. 또한 가시성을 true로 설정하고 JComponents를 추가했습니다.스윙 구성 요소가 보이지 않음

Frame Fenster = new Frame(); 

그리고이 ...

package me.JavaProgramm; 

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.text.NumberFormat; 
import java.text.ParseException; 
import java.util.Locale; 

public class Frame extends JFrame { 
    private JButton bChange; 
    private JTextField tvonEur; 
    private JTextField tzuOCur; //andere Währung (other Currency) 
    private JTextField tzuEur; 
    private JTextField tvonOCur; 
    private JComboBox cbCur; //Wärhung wählen 
    private String curName; 
    private double faktorUSD; 
    private double faktorGBP; 

    private static String[] comboCur = {"USD", "GBP"}; 

    public Frame() { 
     setLayout(null); 
     setVisible(true); 
     setSize(400, 400); 
     setTitle("Währungsrechner"); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setAlwaysOnTop(true); 
     setResizable(false); 

     Font schrift = new Font("Serif", Font.PLAIN + Font.ITALIC, 30); 

     tvonEur = new JTextField("Euro"); 
     tvonEur.setSize(80, 25); 
     tvonEur.setLocation(20, 50); 
     tvonEur.requestFocusInWindow(); 
     tvonEur.selectAll(); 

     tzuEur = new JTextField("Euro"); 
     tzuEur.setSize(80, 25); 
     tzuEur.setLocation(20, 150); 
     tzuEur.requestFocusInWindow(); 
     tzuEur.selectAll(); 

     bChange = new JButton("Euro zu US-Dollar"); 
     bChange.setSize(120, 25); 
     bChange.setLocation(110, 50); 

     tzuOCur = new JTextField("US-Dollar"); 
     tzuOCur.setSize(80, 25); 
     tzuOCur.setLocation(240, 50); 
     tzuOCur.requestFocusInWindow(); 
     tzuOCur.selectAll(); 

     tvonOCur = new JTextField("US-Dollar"); 
     tvonOCur.setSize(80, 25); 
     tvonOCur.setLocation(240, 50); 
     tvonOCur.requestFocusInWindow(); 
     tvonOCur.selectAll(); 

     cbCur = new JComboBox(comboCur); 
     cbCur.setSize(100, 20); 
     cbCur.setLocation(100, 100); 

     tvonEur.setVisible(true); 
     tzuEur.setVisible(true); 
     tzuOCur.setVisible(true); 
     tvonOCur.setVisible(true); 
     bChange.setVisible(true); 
     cbCur.setVisible(true); 

     add(tvonEur); 
     add(bChange); 
     add(tzuOCur); 
     add(cbCur); 

     Currency currency = new Currency(); 

     String strUSD = currency.convertUSD(); 
     try { 
      NumberFormat formatUSD = NumberFormat.getInstance(Locale.GERMANY); 
      Number numberUSD = formatUSD.parse(strUSD); 
      faktorUSD = numberUSD.doubleValue(); 
      System.out.println(faktorUSD); 
     } catch (ParseException e) { 
      System.out.println(e); 
     } 

     String strGBP = currency.convertGBP(); 
     try { 
      NumberFormat formatGBP = NumberFormat.getInstance(Locale.GERMANY); 
      Number numberGBP = formatGBP.parse(strGBP); 
      faktorGBP = numberGBP.doubleValue(); 
      System.out.println(faktorGBP); 
     } catch (ParseException e) { 
      System.out.println(e); 
     } 

     cbCur.addActionListener(new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent e) { 
       cbCur = (JComboBox) e.getSource(); 
       curName = (String) cbCur.getSelectedItem(); 
       if (curName == "USD") { 
        tzuOCur.setText("US-Dollar"); 
       } else if (curName == "GBP") { 
        tzuOCur.setText("British-Pound"); 
       } 
      } 
     }); 

     bChange.addActionListener(new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent e) { 
       if (curName == "USD") { 
        try { 
         Double doubleEUR = Double.parseDouble(tvonEur.getText()); 
         Double doubleUSD = doubleEUR * faktorUSD; 
         tzuOCur.setText(Double.toString(roundScale3(doubleUSD))); 
        } catch (NumberFormatException nfe) { 
         System.out.println("Gebe einen richten Wert ein!"); 
        } 
       } else if (curName == "GBP") { 
        try { 
         Double doubleEUR = Double.parseDouble(tvonEur.getText()); 
         Double doubleGBP = doubleEUR * faktorGBP; 
         tzuOCur.setText(Double.toString(roundScale3(doubleGBP))); 
        } catch (NumberFormatException nfe) { 
         System.out.println("Gebe einen richten Wert ein!"); 
        } 
       } 
      } 
     }); 
    } 

    public static double roundScale3(double d) { 
     return Math.rint(d * 1000)/1000.; 
    } 
} 

답변

0

상위 컨테이너에 아이를 추가 한 후 setVisible(true) 이동하십시오 : 여기 내 코드입니다.

일반적으로 스윙으로이 같은 이벤트 발송 쓰레드에 표시 구성 요소를 업데이트 코드를 삽입하는 것이 좋습니다 간주 :

SwingUtilities.invokeLater(new Runnable() { 
    @Override 
    public void run() { 
    Frame.this.setVisible(true); 
    } 
}); 
+0

내가 코드에 붙여 넣기 할 필요가 어디에서 새로운 해요? – Donny

+0

'add' 문이 나에게 잘 돌아 간다. –

+0

그래도 작동하지만 구성 요소는 여전히 보이지 않습니다. – Donny

관련 문제