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属性。我试着为它创建一个对象,也试着将方法设置为静态,但它就是不起作用
我想知道的是使用什么修饰语