Java 从JTabbedPane更改JFrame属性

Java 从JTabbedPane更改JFrame属性,java,swing,jframe,jtabbedpane,always-on-top,Java,Swing,Jframe,Jtabbedpane,Always On Top,这是制作框架和选项卡式窗格的类: 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; J

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

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

    }

}
修订了成套作业工具套件;
导入javax.swing.*;
导入java.awt.*;
导入java.awt.event.*;
公共类JPanel实现ActionListener、ItemListener
{
私有静态最终长serialVersionUID=1L;
JLabel lblX2=新的JLabel(“x²的系数:”,JLabel.LEFT);
JLabel lblX=新的JLabel(“x的系数:”,JLabel.LEFT);
JLabel lblNum=新的JLabel(“编号:”,JLabel.LEFT);
JLabel lblNature=新的JLabel(“根的性质:”,JLabel.LEFT);
JLabel lblVal1=新的JLabel(“值1:”,JLabel.LEFT);
JLabel lblVal2=新的JLabel(“值2:”,JLabel.LEFT);
jtextfx2=新的JTextField(20);
JTextField tfX=新的JTextField(20);
JTextField tfNum=新的JTextField(20);
JTextField tfNature=新的JTextField(20);
JTextField tfVal1=新的JTextField(20);
JTextField tfVal2=新的JTextField(20);
JPanel[]行=新JPanel[7];
JButton btnNature=新JButton(“根的性质”);
JButton btnCalc=新JButton(“计算”);
JButton btnClear=新JButton(“清除”);
双a=0,b=0,c=0;
双Val1=0,Val2=0,判别式=0;
字符串StrVal1,StrVal2;
二次()
{
setLayout(新网格布局(8,1));
对于(int i=0;i<7;i++)
{
行[i]=新JPanel();
添加(第[i]行);
行[i].setLayout(新的GridLayout(1,2));
}
行[3]。setLayout(新的GridLayout(1,3));
行[0]。添加(lblX2);
行[0]。添加(tfX2);
行[1]。添加(lblX);
行[1]。添加(tfX);
第[2]行。添加(lblNum);
第[2]行。添加(tfNum);
第[3]行。添加(BTN名称);
{
addActionListener(新的ActionListener()
{
已执行的公共无效操作(操作事件e)
{
自然();
}
}
);
}
第[3]行。添加(btnCalc);
{
btnCalc.setEnabled(false);
addActionListener(新的ActionListener()
{
已执行的公共无效操作(操作事件e)
{
计算();
}
}
);
}
第[3]行。添加(btnClear);
{
addActionListener(新ActionListener()
{
已执行的公共无效操作(操作事件e)
{
清除();
}
}
);
}
第[4]行。添加(lblNature);
第[4]行。添加(tfNature);
第[5]行。添加(lblVal1);
第[5]行。添加(tfVal1);
第[6]行。添加(lblVal2);
第[6]行。添加(tfVal2);
tfNature.setEditable(false);
tfVal1.setEditable(false);
tfVal2.setEditable(false);
JCheckBox chckbxAlwaysOnTop=新的JCheckBox(“始终在顶部”);
addItemListener(新的ItemListener()){
公共无效itemStateChanged(ItemEvent ie)
{
如果(即getStateChange()==ItemEvent.SELECTED)
{
//setAlwaysTop();
//这是从主类到始终在jframe的顶部条件上更改的方法
}
else if(即getStateChange()==ItemEvent.取消选择)
{
//setNotAlwaysTop();
//这是从主类到始终在jframe的顶部条件上更改的方法
}
}
});
添加(chckbxAlwaysOnTop);
setVisible(真);
}
公共空间计算()
{
a=Double.parseDouble(tfX2.getText());
b=Double.parseDouble(tfX.getText());
c=Double.parseDouble(tfNum.getText());
Val1=(-b+数学sqrt(判别式))/(2*a);
Val2=(-b-数学sqrt(判别式))/(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);
}
公共空间清除()
{
a=0;b=0;c=0;
Val1=0;Val2=0;判别式=0;
tfX2.setText(“”);
tfX.setText(“”);
tfNum.setText(“”);
tfVal1.setText(“”);
tfVal2.setText(“”);
tfNature.setText(“”);
}
公共空间性质()
{
a=Double.parseDouble(tfX2.getText());
b=Double.parseDouble(tfX.getText());
c=Double.parseDouble(tfNum.getText());
判别式=(b*b)-(4*(a*c));
if(判别式==0)
{
tfNature.setText(“相等”);
btnCalc.setEnabled(真);
}
else if(判别式<0)
{
tfNature.setText(“虚构”);
}
其他的
{
tfNature.setText(“真实、独特”);
btnCalc.setEnabled(真);
}
}
已执行的公共无效操作(操作事件arg0)
{
//TODO自动生成的方法存根
}
公共无效itemStateChanged(ItemEvent arg0)
{
//TODO自动生成的方法存根
}
}
因此,我想做的是在选项卡中添加一个复选框,它允许我将主类中生成的JFrame的属性设置为始终位于顶部。 首先,我不明白如何正确地调用该方法,以便它更改always-on-top属性。我试着为它创建一个对象,也试着将方法设置为静态,但它就是不起作用

我想知道的是使用什么修饰语