我解決了一個問題,當我手工製作簡單的代碼,第二個使用GUI builder時,NetBeans和Netbeans創建的工作並不是那種我想要的方式。在附上的截圖是我的應用程序的外觀。 http://postimg.org/image/6c00csqjn/它工作時,我切換製表符,MathML中的公式將呈現與JEuclid庫,以防我手寫代碼的情況下。JTabbedPane addTab和add之間有什麼區別
但是當我在NetBeans中執行相同的操作時,請使用builder執行gui,並將呈現代碼寫入使用netbeans生成的操作事件,然後代碼不起作用並且不進行渲染。請有人告訴我哪裏是錯誤?在NetBeans中,我發現只有Netbeans使用.addTab才能使用JTabbedPane,而不是.add,因爲我的應用程序代碼如下所示。
謝謝你的任何答覆
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>∫</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);}
}
你有沒有檢查過,stateChanged()是否隨時被調用? –