有没有人知道是否有一种简单的方法可以在包含标签的JCheckBox对象周围放置边框?setBorder似乎没有任何效果.我知道我可以将每个复选框放在一个JPanel和边框内,但是没有办法将整个JCheckBox单独连接起来吗?谢谢
编辑:使用下面提供的解决方案,我已经更改了代码,在JScrollPane中有一个JPanel.使用JButton我将JCheckBoxes添加到JScrollPane内的JPanel.这是一个问题,因为JScrollPanecan只接受一个JComponent.解决了其余问题,在JScrollPane中为JPanel设置了gridlayout.为了后代,我在这里保留了原来的问题:
原始问题:我正在尝试动态创建JCheckBox并将它们添加到JScrollPane,但唉,我收效甚微.我将其简化为单一的概念验证实现.
我在JFrame中有一个JScrollPaneon JPanel.同样在JPanel上,我添加了一个按钮,可以在单击时将JCheckBox添加到JScrollPane.应该够简单.按钮内的代码如下:
private void addCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {
JCheckBox cb = new JCheckBox("New CheckBox");
jScrollPaneCheckBoxes.add(cb);
jScrollPaneCheckBoxes.revalidate();
}
Run Code Online (Sandbox Code Playgroud)
代码运行似乎没有错误.我没有例外,使用调试器显示JCheckBox实际上已添加到JScrollPane.不幸的是,应用程序中没有显示任何内容 我需要指导在哪里寻找问题.
这是您可以运行的快速代码.不幸的是,我使用Netbeans和它的GUI设计器将它们放在一起,因此它比它需要的时间长,特别是生成的代码.专注于方法jButton1ActionPerformed,这就是上面代码的来源.
编辑:此代码现在做我需要它.:-)
package dynamiccheckboxsscce;
import javax.swing.JCheckBox;
public class Main extends javax.swing.JFrame {
/**
* Creates new form Main
*/
public Main() {
initComponents();
}
@SuppressWarnings("unchecked")
private void initComponents() {
jScrollPane1 = new javax.swing.JScrollPane();
jPanel1 = new javax.swing.JPanel();
jButton1 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jScrollPane1.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
jScrollPane1.setPreferredSize(new java.awt.Dimension(250, 250));
jPanel1.setPreferredSize(new java.awt.Dimension(300, 250));
jPanel1.setLayout(new java.awt.GridLayout(0, 2, 10, 10));
jScrollPane1.setViewportView(jPanel1);
jButton1.setText("Add Checkbox");
jButton1.addActionListener(new java.awt.event.ActionListener() { …Run Code Online (Sandbox Code Playgroud) 在 Windows 中,可以显示灰色的 JCheckbox,以表明它所代表的数据集合并非所有项目都具有相同的值。
这对于 JCheckBox 来说是可能的吗?我该怎么办?(希望有办法不覆盖它)
谢谢
我有一个JTable,有一列是文本,不可编辑,第二列是一个显示布尔值的复选框....现在我想要的是,当用户选择多行并取消选中任何一行时选中复选框,然后选中下面的所有复选框都应取消选中,反之亦然.
我想让 JTable 中的 JCheckboxes 更大(用于触摸屏),但它不会改变大小。
我试过了
我该怎么办?..
有人可以向我解释为什么我放弃了选择(设置setSelected())JCheckBox时我放入JOptionPane了ItemListener?这是一个错误吗?
很奇怪,如果这个过程延迟invokeLater(),setSelected()正如我预期的那样正常工作.

来自SSCCE
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ComponentEventDemo extends JPanel
implements ComponentListener, ItemListener {
private static final long serialVersionUID = 1L;
private JFrame frame;
private JTextArea display;
private String newline = "\n";
private JTextField field1;
public ComponentEventDemo() {
super(new BorderLayout());
display = new JTextArea(10, 25);
display.setEditable(false);
JPanel panel = new JPanel(new GridLayout(0, 2));
field1 = new JTextField();
field1.setDisabledTextColor(Color.red);
JCheckBox checkbox = new JCheckBox("Label visible", …Run Code Online (Sandbox Code Playgroud) 我有一个带有一堆不同复选框和文本字段的 JPanel,我有一个被禁用的按钮,需要在设置特定配置时启用。我需要的是在整个 JPanel 上寻找事件的侦听器,无论何时发生任何变化。我相信我需要一个动作监听器,但我找不到任何东西来将动作监听器与 JPanel 连接起来
JPanel Window = new JPanel();
Window.addActionListener(new ActionListener(){
//Check if configurations is good
}
Run Code Online (Sandbox Code Playgroud)
我想我可以将我的代码多次复制并粘贴到面板中的每个侦听器中,但这对我来说似乎是一种糟糕的编码习惯。
如何监听包含JCheckBox的JTable列中的更改?我想知道用户何时选择/取消选中复选框.该列的类设置为boolean,因此它将自动呈现为JCheckBox.
使用JCheckBox作为JTable列中的编辑器,我想忽略TableCell中CheckBox左右两侧的鼠标点击.
我在2011年的Oracle论坛上找到了一个讨论,但问题没有在那里解决:https://community.oracle.com/thread/2183210
这是我到目前为止所实现的黑客攻击,有趣的部分开始于class CheckBoxEditor:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ComponentEvent;
import java.awt.event.MouseEvent;
import java.util.EventObject;
import javax.swing.DefaultCellEditor;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
/**
* Trying to set the Checkbox only if clicked directly on the box of the CheckBox. And ignore clicks on the
* remaining space of the TableCell.
*
* @author bobndrew
*/
public class JustCheckOnCheckboxTable extends JPanel
{
private static final int …Run Code Online (Sandbox Code Playgroud) 我想问一下,如果没有actionListener,有没有办法从JCheckBox获取信息.在我的代码中,我扫描一个字符串文件,每行都有数据,如果选中,应该添加到我的程序中的数组中.问题是我永远不会知道我将拥有多少个JCheckBox,它取决于文件.
所以,我的问题是如何通过按下按钮将所选字符串放入数组(或列表)(确定),这样我就可以用它们做其他事情(在我的情况下,我需要从文件或手动输入获取数据)把它放在一个红黑树,所以我需要将选定的字符串推送到我的putDataInTheTree方法).
编辑:此外,是否有可能不显示已添加到该程序的JCheckBoxes?IE如果我选择液体,下次我打电话输入方法液体不会在我的面板中显示?
提前致谢!
看起来如何:

我的代码到目前为止:
public void input() {
try {
mainWindow.setEnabled(false);
fromFile = new JFrame("Input from file");
fromFile.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
fromFile.setLayout(new BorderLayout());
fromFile.setSize(300,200);
panelFromFile = new JPanel();
panelFromFile.setLayout(new java.awt.GridLayout(0,1));
JScrollPane scrollPane2 = new JScrollPane(panelFromFile);
scrollPane2.setMaximumSize(new Dimension(300, 180));
FileReader File = new FileReader(data);
BufferedReader Buffer = new BufferedReader(File);
while ((info = Buffer.readLine()) != null) {
if (info != null) {
JCheckBox check = new JCheckBox(info);
panelFromFile.add(check);
}
}
ok = new JButton("ok");
ok.addActionListener(this);
fromFile.add(scrollPane2, BorderLayout.CENTER);
fromFile.add(ok, BorderLayout.SOUTH);
fromFile.setLocationRelativeTo(null);
fromFile.setResizable(false);
fromFile.setVisible(true);
} …Run Code Online (Sandbox Code Playgroud) java ×10
jcheckbox ×10
swing ×9
jtable ×4
border ×1
dynamic ×1
joptionpane ×1
jscrollpane ×1
jtextfield ×1
mixed ×1
size ×1