我只是一个初学者,我在将项目侦听器实现为内部类时遇到了问题。
我想要发生的是,如果有人选择了 checkbox t1
,它上面的文本,写在 TextArea txtTop
,变成粗体。
但是,Eclipse 告诉我,我的侦听器存在多个问题。
- 它要我将 t1 和 txtTop 声明为最终结果。
- 它希望我不要将侦听器类设为私有。
- 无论如何它都找不到听众。线路
t1.addItemListener(new cl());
不工作。
所以,是的,我不知道该怎么办。希望你们中的一个可以帮助我!:)
这是代码:
import java.awt.BorderLayout;
public class WindowBuilderTest extends JFrame
{
private JPanel contentPane;
//Launch the application.
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
try
{
WindowBuilderTest frame = new WindowBuilderTest();
frame.setVisible(true);
} catch (Exception e)
{
e.printStackTrace();
}
}
});
}
// Creating Frame
public WindowBuilderTest()
{
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 1280, 720 );
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
// Create Font
Font headfont = new Font("Serif", Font.PLAIN, 15);
// Role Headlines
final JTextArea txtTop = new JTextArea();
txtTop.setEditable(false);
txtTop.setText("TOP");
txtTop.setBounds(180, 95, 32, 23);
txtTop.setFont(headfont);
contentPane.add(txtTop);
JTextArea txtMid = new JTextArea();
txtMid.setEditable(false);
txtMid.setText("MID");
txtMid.setBounds(252, 95, 32, 23);
contentPane.add(txtMid);
JTextArea txtJng = new JTextArea();
txtJng.setEditable(false);
txtJng.setText("JNG");
txtJng.setBounds(320, 95, 32, 23);
contentPane.add(txtJng);
JTextArea txtAdc = new JTextArea();
txtAdc.setEditable(false);
txtAdc.setText("ADC");
txtAdc.setBounds(389, 95, 32, 23);
contentPane.add(txtAdc);
JTextArea txtSup = new JTextArea();
txtSup.setEditable(false);
txtSup.setText("SUP");
txtSup.setBounds(453, 95, 32, 23);
contentPane.add(txtSup);
// Checkbox 1st row
final JCheckBox t1 = new JCheckBox("");
t1.setBounds(183, 143, 23, 23);
t1.addItemListener(new cl());
contentPane.add(t1);
JCheckBox m1 = new JCheckBox("");
m1.setBounds(255, 143, 23, 23);
contentPane.add(m1);
JCheckBox j1 = new JCheckBox("");
j1.setBounds(322, 143, 23, 23);
contentPane.add(j1);
JCheckBox a1 = new JCheckBox("");
a1.setBounds(393, 143, 23, 23);
contentPane.add(a1);
JCheckBox s1 = new JCheckBox("");
s1.setBounds(457, 143, 23, 23);
contentPane.add(s1);
class cl implements ItemListener
{
@Override
public void itemStateChanged(ItemEvent e)
{
if(t1.isSelected())
{
//Font headfont = txtTop.getFont().deriveFont(Font.BOLD, 40);
//txtTop.setFont(headfont);
System.out.println("HURRA!");
}
else
{
//Font headfont = txtTop.getFont().deriveFont(Font.PLAIN, 40);
//txtTop.setFont(headfont);
System.out.println("JUHU!");
}
}
}
}
}