【发布时间】:2019-07-22 13:59:32
【问题描述】:
我通过改编书中的代码设法将这个 GUI 组合在一起。我不确定如何在此代码中实现侦听器,因为它超出了我的水平,但我需要它们来更轻松地测试我的程序。我浏览了这个网站上类似的帖子,但是没有人使用与我相同的代码结构,我不确定如何在这些帖子上实施解决方案。
到目前为止,我已经尝试使用 JCheckbox.addActionListener(this);,这是 oracle 网站所说的。无论我把这个语句放在哪里,我都会遇到各种各样的错误,我不知道为什么。
package inputform;
import java.awt.*;
import javax.swing.*;
import java.awt.event.ActionListener;
public class Traitform extends JFrame implements ActionListener{
JPanel row1 = new JPanel();
JCheckBox eye1 = new JCheckBox("Brown");
JCheckBox eye2 = new JCheckBox("Blue");
JCheckBox eye3 = new JCheckBox("Green");
JCheckBox eye4 = new JCheckBox("Hazel");
JPanel row2 = new JPanel();
JCheckBox hair1 = new JCheckBox("Brown");
JCheckBox hair2 = new JCheckBox("Blonde");
JCheckBox hair3 = new JCheckBox("Ginger");
JCheckBox hair4 = new JCheckBox("Black");
JPanel row3 = new JPanel();
JCheckBox eye5 = new JCheckBox("Brown");
JCheckBox eye6 = new JCheckBox("Blue");
JCheckBox eye7 = new JCheckBox("Green");
JCheckBox eye8 = new JCheckBox("Hazel");
JPanel row4 = new JPanel();
JCheckBox hair5 = new JCheckBox("Brown");
JCheckBox hair6 = new JCheckBox("Blonde");
JCheckBox hair7 = new JCheckBox("Ginger");
JCheckBox hair8 = new JCheckBox("Black");
public Traitform () {
super("Parent Trait Form");
setSize(1000, 1000);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GridLayout layout = new GridLayout(0,1);
setLayout(layout);
row1.add(eye1);
row1.add(eye2);
row1.add(eye3);
row1.add(eye4);
row3.add(eye5);
row3.add(eye6);
row3.add(eye7);
row3.add(eye8);
row2.add(hair1);
row2.add(hair2);
row2.add(hair3);
row2.add(hair4);
row4.add(hair5);
row4.add(hair6);
row4.add(hair7);
row4.add(hair8);
add(row1);
add(row2);
add(row3);
add(row4);
setVisible(true);
}
private static void setLookAndFeel() {
try{
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
} catch (Exception exc){
}
}
public static void main(String[] arguments){
Traitform.setLookAndFeel();
Traitform frame = new Traitform();
}
@Override
public void actionPerformed(ActionListener e){
System.out.println("action");
}
}
我需要这个程序从复选框中获取用户输入,以便它可以在我的程序的另一个部分中的单独包中使用。当我运行当前代码时,我收到错误无法编译的程序。
【问题讨论】:
-
看起来像是首选项文件的用例,甚至可能是数据库。您需要在某处保留这些值,以便在程序启动时
setLookAndFeel(main)。 -
这是来自 oracle 的代码:docs.oracle.com/javase/tutorial/uiswing/events/…
public AL(String title) { super(title); setLayout(new FlowLayout()); addWindowListener(this); b = new Button("Click me"); add(b); add(text); b.addActionListener(this);好像我只需要将它实现到我现有的代码中。 -
仅供参考,您不需要 ButtonGroups,它们用于您不使用的单选按钮组。
标签: java swing user-interface listener