- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我只是一个初学者,在将项目监听器实现为内部类时遇到问题。
我想要发生的是,如果有人选择复选框 t1
,则其上方的文本(在 TextArea txtTop
中写入)将变为粗体。
但是,Eclipse 告诉我我的监听器存在多个问题。
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!");
}
}
}
}
}
最佳答案
这对你有用:
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.border.EmptyBorder;
public class WindowBuilderTest extends JFrame
{
private JPanel contentPane;
//Launch the application.
public static void main(final String[] args)
{
EventQueue.invokeLater(new Runnable()
{
@Override
public void run()
{
try
{
final WindowBuilderTest frame = new WindowBuilderTest();
frame.setVisible(true);
}
catch (final Exception e)
{
e.printStackTrace();
}
}
});
}
// Creating Frame
public WindowBuilderTest()
{
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 1280, 720);
this.contentPane = new JPanel();
this.contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(this.contentPane);
this.contentPane.setLayout(null);
// Create Font
final 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);
this.contentPane.add(txtTop);
final JTextArea txtMid = new JTextArea();
txtMid.setEditable(false);
txtMid.setText("MID");
txtMid.setBounds(252, 95, 32, 23);
this.contentPane.add(txtMid);
final JTextArea txtJng = new JTextArea();
txtJng.setEditable(false);
txtJng.setText("JNG");
txtJng.setBounds(320, 95, 32, 23);
this.contentPane.add(txtJng);
final JTextArea txtAdc = new JTextArea();
txtAdc.setEditable(false);
txtAdc.setText("ADC");
txtAdc.setBounds(389, 95, 32, 23);
this.contentPane.add(txtAdc);
final JTextArea txtSup = new JTextArea();
txtSup.setEditable(false);
txtSup.setText("SUP");
txtSup.setBounds(453, 95, 32, 23);
this.contentPane.add(txtSup);
// Checkbox 1st row
addCheckBox(183, 143, 23, 23, txtTop);
addCheckBox(255, 143, 23, 23, txtMid);
addCheckBox(322, 143, 23, 23, txtJng);
addCheckBox(393, 143, 23, 23, txtAdc);
addCheckBox(457, 143, 23, 23, txtSup);
}
private void addCheckBox(final int x, final int y, final int width, final int height, final JTextArea txtTop)
{
final JCheckBox checkBox = new JCheckBox();
checkBox.setBounds(x, y, width, height);
checkBox.addItemListener(new BoldChanger(txtTop));
this.contentPane.add(checkBox);
}
class BoldChanger implements ItemListener
{
private JTextArea textArea;
public BoldChanger(final JTextArea textArea)
{
this.textArea = textArea;
}
@Override
public void itemStateChanged(final ItemEvent e)
{
if (e.getStateChange() == ItemEvent.SELECTED)
{
final Font boldFont = this.textArea.getFont().deriveFont(Font.BOLD);
this.textArea.setForeground(Color.RED);
this.textArea.setFont(boldFont);
}
else
{
final Font boldFont = this.textArea.getFont().deriveFont(Font.PLAIN);
this.textArea.setForeground(Color.BLACK);
this.textArea.setFont(boldFont);
}
}
}
}
您遇到以下问题:
ActionListener listner = new ActionListner{ ...}
),最后的想法是正确的。如果您有这样的类,则可以访问成员变量。我将您的 ItemListner 重命名为 BoldChanger
。它在构造函数中获取要更改的 TextArea。
顺便说一句:
关于java - JCheckBox 的 ItemListener 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18685443/
我正在从 Dive Log 教程中学习 java swing。对象已声明如下: ItemListener handler = new CheckBoxHandler(); 上面的代码会产生一个编译错误
我一直在 itemStateChanged 部分遇到问题。当我编译程序时出现“无法找到变量”错误,而且我似乎无法找出我哪里做错了。任何帮助深表感谢。谢谢。 import javax.swing.*;
所以如果我有一个组合框“box”,并且它被设置为具有值“hello”和“world”的数组,我如何检测选择了哪一个? 最佳答案 box.getSelectedItem(); 这将返回一个被选中的对象。
基本上这个简单程序的作用是 单击按钮时显示摘要, 比萨大小有三个单选按钮,浇头有三个复选框。 我遇到的问题是,当用户第一次单击浇头,然后单击按钮并在 MessageDialog 中显示适当的摘要后,当
我正在尝试在 JCheckBox 中实现 ItemListener。以下代码有效: public class Test { public static void main(String[] a
我正在尝试为一个简单的 Applet 运行以下代码,但在调用 ItemListener 时不断收到错误。任何人都知道我该如何解决这个问题。当我检查任何复选框“线程“AWT-EventQueue-1”j
我有一个 JComboBox 和一个 ItemListener,可以检测项目状态何时发生变化。我希望它监听是否选择了列表中的第一个项目。 它是一个用户名列表,默认情况下始终使用第一项。但是我需要知道用
我正在为我的单选按钮使用 ItemListener。我看到了很多 ItemListener 函数,但我的似乎工作方式不同。 ... jUserButton2.addItemListene
我编写了这段代码,它应该在从组合框中选择一个项目后更改 JLabel 中的值。当我运行应用程序时,JLabel 中会显示该值,但是当我在组合框中选择其他值时,JLabel 中的值不会更改。有谁知道问题
当我使用 ItemListener 监听组合框时,我如何知道在 ItemEvent.DESELECTED 被触发时取消选择了哪个项目? 最佳答案 使用ItemEvent.getItem() 关于jav
jbox.addItemListener(new ItemListener() { @Override public void itemStateChanged(Ite
考虑向 JComboBox 添加事件监听器。我已经完成了通常的窗口等。创建了一个新的 JComboBox,然后将 .addItem() 岛放入其中。然后我尝试在新创建的组合框中使用 .addItemL
我正在将 ItemListener 添加到组合框,并且我想知道事件 ItemEvent.DESELECTED 是否始终在事件 ItemEvent.SELECTED 之前触发,或者顺序是否未指定。 在一
我注意到,在选择复选框时在 ItemListener 中使用消息框时,它将阻止该复选框被选中。这是演示该问题的完整示例: import javax.swing.*; import static jav
我正在尝试制作一个可以启用或禁用另一个按钮的按钮。我不确定为什么它没有进入 ItemListener 或者 ItemListener 只用于切换事件?这是我的代码。 这是在主要方法中:
我最小化了我的程序以仅包含问题,并且我尝试完全按照我从许多示例中理解的方式进行编码。当我使用 ActionListener 时,我解决了问题。但我想知道为什么使用 ItemListener 时,复选框
我是 Java Swing 新手。请帮助我如何实现以下要求。 单击按钮后,我必须打开一个对话框。我的对话框有 2 个 JComboBox。我在 JComboBox1 上编写了一个 ItemListne
我为 ListView 创建了一个 onTouchListener,用于检查该列表中的哪个项目(在我的例子中为字符串)被单击及其位置。我想取出列表中的该字符串,因此我创建了一个方法来获取数组适配器的字
这个API有什么用? 几个月前我采用了它,当时我想我可以用它来捕获 ComboBox 中的键盘和鼠标操作,以便在用户做出选择后调用业务逻辑。作为一名开发人员,我只使用鼠标,幸福地无知,认为我的解决方案
我正在尝试从我的一个 JComboBoxes 中删除项目监听器。下面是代码。 clientNameCombo.removeItemListener(clientNameCombo.getItemLis
我是一名优秀的程序员,十分优秀!