2015-10-09 43 views
1

我無法將此TextField添加到界面中,所得到的窗口很明顯,沒有任何細節,儘管我嘗試了很多以找到問題所在。代碼: import java.awt.ComponentOrientation; import java.awt.Font;無法將TextField添加到Java界面中

import javax.swing.JFrame; 
import javax.swing.JTextField; 
import javax.swing.UIManager; 

public class Calculator extends JFrame { 
    private JTextField display; 

    public static void main(String[] args) { 
     try { 
      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
     } catch (Exception e) { 
      System.out.println("Could not load system interface\n"); 
     } 
     new Calculator(); 
    } 

    public Calculator() { 
     super("Calculator"); 
     sendDisplay(); 
     sendUI(this); 
    } 

    private void sendDisplay() { 
     display = new JTextField("0"); 
     display.setBounds(10, 10, 324, 50); 
     display.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); 
     display.setEditable(false); 
     display.setFont(new Font("Arial", Font.PLAIN, 30)); 
     display.setVisible(true); 
     add(display); 
    } 

    private void sendUI(Calculator app) { 
     app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     app.setVisible(true); 
     app.setSize(400, 600); 
     app.setLayout(null); 
     app.setResizable(false); 
     app.setLocationRelativeTo(null); 
    } 
} 

我將不勝感激,如果有人能夠找到問題

+3

1)Java GUI必須在不同的語言環境中使用不同的PLAF來處理不同的操作系統,屏幕大小,屏幕分辨率等。因此,它們不利於像素的完美佈局。請使用佈局管理器或[它們的組合](http://stackoverflow.com/a/5630271/418556)以及[white space]的佈局填充和邊框(http://stackoverflow.com/a/17874718/ 418556)。 2)'new Font(「Arial」,Font.PLAIN,30)'最好是'new Font(Font.SANS_SERIF,Font.PLAIN,30)',以便跨平臺的穩健性和編譯時間檢查。 –

+3

避免使用'null'佈局,像素完美的佈局是現代UI設計中的幻想。影響組件的個體大小的因素太多,其中沒有一個可以控制。 Swing旨在與佈局經理一起工作,放棄這些將導致問題和問題的終結,您將花費越來越多的時間來嘗試糾正 – MadProgrammer

回答

2

setVisible(true)是使用sendUI方法

private void sendUI(Calculator app) { 
    app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    app.setSize(400,600); 
    app.setLayout(null); 
    app.setResizable(false); 
    app.setLocationRelativeTo(null); 

    app.setVisible(true);    
} 

良好實踐

  • 避免的最後聲明絕對定位(null lay出)。
+0

這工作,謝謝:) –