2014-03-13 109 views
0

我解決了一個問題,當我手工製作簡單的代碼,第二個使用GUI builder時,NetBeans和Netbeans創建的工作並不是那種我想要的方式。在附上的截圖是我的應用程序的外觀。 http://postimg.org/image/6c00csqjn/它工作時,我切換製表符,MathML中的公式將呈現與JEuclid庫,以防我手寫代碼的情況下。JTabbedPane addTab和add之間有什麼區別

但是當我在NetBeans中執行相同的操作時,請使用builder執行gui,並將呈現代碼寫入使用netbeans生成的操作事件,然後代碼不起作用並且不進行渲染。請有人告訴我哪裏是錯誤?在NetBeans中,我發現只有Netbeans使用.addTab才能使用JTabbedPane,而不是.add,因爲我的應用程序代碼如下所示。

謝謝你的任何答覆

enter image description here

import java.awt.BorderLayout; 
import java.awt.Container; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 
import javax.swing.JSpinner; 
import javax.swing.JTabbedPane; 
import javax.swing.JTextArea; 
import javax.swing.event.ChangeEvent; 

import net.sourceforge.jeuclid.swing.JMathComponent; 

public class MathMLTabbed extends JFrame{ 
    private JTextArea formulaSource; 
private JPanel drawingArea, editorArea; 
    private JSpinner spinner; 
    private JTabbedPane zalozky; 

public MathMLTabbed() { 
    this.setTitle("MathML Example"); 
    this.setSize(500, 500); 
      setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 
    Container content = getContentPane();    

    this.formulaSource = new JTextArea(); 
    editorArea = new JPanel(); 
    editorArea.setLayout(new BorderLayout()); 
    editorArea.add(new JScrollPane(this.formulaSource),BorderLayout.CENTER); 
      editorArea.add(spinner = new JSpinner(),BorderLayout.NORTH); 
      spinner.setValue(18); 

      drawingArea = new JPanel(); 

      zalozky = new JTabbedPane(); 
      zalozky.addTab("MathML vstup", editorArea); 
      zalozky.addTab("Vzorec", new JScrollPane(drawingArea)); 
    content.add(zalozky); 

    zalozky.addChangeListener(new javax.swing.event.ChangeListener() { 

       @Override 
       public void stateChanged(ChangeEvent e) { 
        if(zalozky.getSelectedIndex() == 0) 
         drawingArea.removeAll(); 
        if(zalozky.getSelectedIndex() == 1) 
         render(); 
       } 
      }); 

      String retezec = "<?xml version=\"1.0\"?>\r\n" + 
        "<!DOCTYPE math PUBLIC \"-//W3C//DTD MathML 2.0//EN\" \"http://www.w3.org/TR/MathML2/dtd/mathml2.dtd\">\r\n" + 
        "<math mode=\"display\">\r\n" + 
        " <mrow>\r\n" + 
        " <munderover>\r\n" + 
        "  <mo>&#x222B;</mo>\r\n" + 
        "  <mn>1</mn>\r\n" + 
        "  <mi>x</mi>\r\n" + 
        " </munderover>\r\n" + 
        " <mfrac>\r\n" + 
        "  <mi>dt</mi>\r\n" + 
        "  <mi>t</mi>\r\n" + 
        " </mfrac>\r\n" + 
        " </mrow>\r\n" + 
        "</math>"; 

      formulaSource.setText(retezec); 
} 

    public void render() {  
     // get the text 
     String latex = formulaSource.getText();   
     // create a formula 
     JMathComponent formula = new JMathComponent();      
        drawingArea.add(formula); 
        formula.setFontSize((int)spinner.getValue()); 
        formula.setContent(latex); 



} 

    public static void main(String[] args) { 
    MathMLTabbed frame = new MathMLTabbed();   
    frame.setVisible(true);}  
} 
+0

你有沒有檢查過,stateChanged()是否隨時被調用? –

回答

0

沒有閱讀你的代碼,只寫一個回答你的問題,什麼樣的兩種方法之間的區別是,這裏的文檔的方法:

  1. add()
  2. addTab()

兩者都是insertTab()的覆蓋方法。

+0

我知道他們都是插入方法,但我比較netbeans代碼(如果需要,我可以附加)與我的,但我找不到哪裏是bug – user3355244

相關問題