我想要的是,当选择了两个复选框时,可滚动框可见
JPanel panel = new JPanel();
panel.setBounds(10, 10, 5, 3);//pos is temp
contentPane.add(panel);
JScrollPane scrollPane = new JScrollPane();
panel.add(scrollPane);
并且在框中用户应该能够输入数字。
所以我为此做的是在滚动窗格中添加一个框并将可见性设置为false。
JScrollPane scrollPane = new JScrollPane();
textField = new JTextField();
scrollPane.add(textField);
textField.setColumns(6);
panel.add(scrollPane);
panel.setVisible(false);
但文本字段未显示。
还有一个听众
ActionListener al = (ActionEvent e) -> {
if (e.getSource() == chA || e.getSource() == chB) {
chckbx1.setEnabled(true);
//setting the panel to visible when box a or B and chckbx1 has been selected
if (e.getSource() == chckbx1) {
panel.setVisible(true);
}
}
};
chA.addActionListener(al);
chB.addActionListener(al);
但是atm这不起作用,任何人都可以帮助我,我将不胜感激。
以下是完整代码>>的链接http://pastebin.com/v689BB8A
答案 0 :(得分:1)
所以,你的基本要求是
选择框a或B和chckbx1时
显示JScrollPane
。
所以,根据你的代码......
if (e.getSource() == chA || e.getSource() == chB) {
chckbx1.setEnabled(true);
//setting the panel to visible when box a or B and chckbx1 has been selected
if (e.getSource() == chckbx1) {
panel.setVisible(true);
}
}
实际上您无法显示panel
,因为source
的{{1}}无法成为ActionEvent
或chA
AND chB
chckbx1
同时,您应该只检查JCheckBox
的{{1}}状态
例如......
selected
通常情况下,我鼓励使用JCheckBox
,但这可能会有点过分,但为此过度杀人。
可运行的示例
if ((chA.isSelected() || chB.isSelected()) && chckbx1.isSelected()) {
panel.setVisible(true);
frame.revalidate();
frame.repaint();
}
答案 1 :(得分:0)
使用此功能,查看您的错误。
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class Test {
private JFrame frame;
private JTextArea textArea;
public static void main(String[] args) {
EventQueue.invokeLater(() -> {
try {
Test window = new Test();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
});
}
/**
* Create the application.
*/
public Test() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setLayout(new FlowLayout(FlowLayout.LEFT, 5, 5));
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JCheckBox chA = new JCheckBox("text");
chA.setFont(new Font("Adobe Arabic", Font.PLAIN, 14));
frame.getContentPane().add(chA);
JCheckBox chB = new JCheckBox("text");
chB.setFont(new Font("Adobe Arabic", Font.PLAIN, 14));
frame.getContentPane().add(chB);
JCheckBox chckbx1 = new JCheckBox("text");
chckbx1.setFont(new Font("Adobe Arabic", Font.PLAIN, 14));
chckbx1.setEnabled(false);
frame.getContentPane().add(chckbx1);
JPanel panel = new JPanel();
frame.add(panel);
JScrollPane scrollPane = new JScrollPane();
scrollPane.setPreferredSize(new Dimension(200, 200));
textArea = new JTextArea(5, 5);
scrollPane.add(textArea);
textArea.setColumns(6);
panel.add(scrollPane);
panel.setVisible(false);
ActionListener al = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == chA || e.getSource() == chB) {
chckbx1.setEnabled(true);
}
if (e.getSource() == chckbx1) {
panel.setVisible(true);
frame.repaint();
}
}
};
chA.addActionListener(al);
chB.addActionListener(al);
chckbx1.addActionListener(al);
}
}