0

这是制作框架和选项卡式窗格的类:

package homeworkToolkitRevised;

import javax.swing.*;
import javax.swing.plaf.nimbus.NimbusLookAndFeel;
import java.awt.event.*;

public class MakeGUI extends JFrame
{
    private static final long   serialVersionUID    = 1L;

    JTabbedPane TabPane;

    public MakeGUI()
    {
        this.setTitle("The Homework Toolkit!");
        setSize(700, 500);
        setAlwaysOnTop(false);
        setNimbus();

        JTabbedPane TabPane = new JTabbedPane();
        add(TabPane);

        TabPane.addTab("Main Menu", new MainScreen());
        TabPane.addTab("Quadratic Equations", new Quadratic());

        setVisible(true);
    }

    public void setAlwaysTop()
    {
        setAlwaysOnTop(true);
    }

    public void setNotAlwaysTop()
    {
        setAlwaysOnTop(false);
    }

    public final void setNimbus() 
    {
        try
        {
            UIManager.setLookAndFeel(new NimbusLookAndFeel());
        } catch (UnsupportedLookAndFeelException e)
        {
            e.printStackTrace();
        }
    }

    public static void main(String[] args)
    {
        new MakeGUI();
    }

}

这是选项卡式窗格中的一个选项卡:

package homeworkToolkitRevised;

import javax.swing.*;

import java.awt.*;
import java.awt.event.*;

public class Quadratic extends JPanel implements ActionListener, ItemListener
{
    private static final long   serialVersionUID    = 1L;

    JLabel lblX2 = new JLabel ("Co-Efficient Of x²:", JLabel.LEFT);
    JLabel lblX = new JLabel ("Co-Efficient of x:", JLabel.LEFT);
    JLabel lblNum = new JLabel ("Number:", JLabel.LEFT);
    JLabel lblNature = new JLabel ("Nature Of Roots:", JLabel.LEFT);
    JLabel lblVal1 = new JLabel ("Value 1:", JLabel.LEFT);
    JLabel lblVal2 = new JLabel ("Value 2:", JLabel.LEFT);

    JTextField tfX2 = new JTextField (20);
    JTextField tfX = new JTextField (20);
    JTextField tfNum = new JTextField (20);

    JTextField tfNature = new JTextField (20);
    JTextField tfVal1 = new JTextField (20);
    JTextField tfVal2 = new JTextField (20);

    JPanel[] row = new JPanel[7];

    JButton btnNature = new JButton ("Nature Of Roots");
    JButton btnCalc = new JButton ("Calculate");
    JButton btnClear = new JButton ("Clear");

    double a = 0, b = 0, c = 0;
    double Val1 = 0, Val2 = 0, Discriminant = 0;
    String StrVal1, StrVal2;

    Quadratic()
    {

        setLayout(new GridLayout(8,1));

        for(int i = 0; i < 7; i++)
        {
            row[i] = new JPanel();
            add(row[i]);
            row[i].setLayout(new GridLayout (1,2));

        }

        row[3].setLayout(new GridLayout (1,3));


            row[0].add(lblX2);
            row[0].add(tfX2);

            row[1].add(lblX);
            row[1].add(tfX);

            row[2].add(lblNum);
            row[2].add(tfNum);

            row[3].add(btnNature);
            {
                btnNature.addActionListener(new ActionListener()
                {
                    public void actionPerformed(ActionEvent e)
                    {
                        Nature();
                    }
                }
                );
            }
            row[3].add(btnCalc);
            {
                btnCalc.setEnabled(false);
                btnCalc.addActionListener(new ActionListener()
                {
                    public void actionPerformed(ActionEvent e)
                    {
                        Calculate();
                    }
                }
                );
            }
            row[3].add(btnClear);
            {
                btnClear.addActionListener(new ActionListener()
                {
                    public void actionPerformed(ActionEvent e)
                    {
                        Clear();
                    }
                }
                );
            }

            row[4].add(lblNature);
            row[4].add(tfNature);

            row[5].add(lblVal1);
            row[5].add(tfVal1);

            row[6].add(lblVal2);
            row[6].add(tfVal2);

            tfNature.setEditable(false);
            tfVal1.setEditable(false);
            tfVal2.setEditable(false);

            JCheckBox chckbxAlwaysOnTop = new JCheckBox("Always On Top");
            chckbxAlwaysOnTop.addItemListener(new ItemListener() {
                public void itemStateChanged(ItemEvent ie) 
                {
                    if(ie.getStateChange() == ItemEvent.SELECTED)
                    {
                        //setAlwaysTop();
                     //This is method from main class to change always on top condition of jframe
                    }
                    else if (ie.getStateChange() == ItemEvent.DESELECTED)
                    {
                        //setNotAlwaysTop();
                    //This is method from main class to change always on top condition of jframe     
                    }
                }
            });
            add(chckbxAlwaysOnTop);

            setVisible(true);
    }

    public void Calculate()
    {
        a = Double.parseDouble(tfX2.getText());
        b = Double.parseDouble(tfX.getText());
        c = Double.parseDouble(tfNum.getText());

        Val1 = (-b + Math.sqrt(Discriminant)) / (2 * a);
        Val2 = (-b - Math.sqrt(Discriminant)) / (2 * a);

        StrVal1 = String.valueOf(Val1);
        StrVal2 = String.valueOf(Val2);

        tfVal1.setText(StrVal1);
        tfVal2.setText(StrVal2);

        tfX2.setText("");
        tfX.setText("");
        tfNum.setText("");

        btnCalc.setEnabled(false);
    }


    public void Clear()
    {
        a = 0; b = 0; c = 0;
        Val1 = 0; Val2 = 0; Discriminant = 0;


        tfX2.setText("");
        tfX.setText("");
        tfNum.setText("");
        tfVal1.setText("");
        tfVal2.setText("");
        tfNature.setText("");
    }

    public void Nature()
    {
        a = Double.parseDouble(tfX2.getText());
        b = Double.parseDouble(tfX.getText());
        c = Double.parseDouble(tfNum.getText());

        Discriminant = (b*b) - (4*(a*c));

        if (Discriminant == 0)
        {
            tfNature.setText("Equal");
            btnCalc.setEnabled(true);
        }
        else if (Discriminant < 0)
        {
            tfNature.setText("Imaginary");
        }
        else
        {
            tfNature.setText("Real, Distinct");
            btnCalc.setEnabled(true);
        }
    }
    public void actionPerformed(ActionEvent arg0)
    {
        // TODO Auto-generated method stub

    }

    public void itemStateChanged(ItemEvent arg0)
    {
        // TODO Auto-generated method stub

    }

}

所以我想要做的是在选项卡中添加一个复选框,允许我将主类中的 JFrame 的属性设置为始终位于顶部。首先,我不明白如何正确调用该方法,以便它改变始终位于顶部的属性。我尝试为它制作一个对象,也尝试将方法设为静态,但它不起作用。

我想知道的是用于方法的修饰符以及如何从 JTabbedPane 内部更改父 JFrame 的属性。

谢谢。

编辑:如果我可以将此复选框添加到 JFrame 本身(如 JTabbed 窗格下方)或其他可以更轻松地使用多个选项卡进行管理的东西,它也会起作用。

4

0 回答 0