编辑:使用下面提供的解决方案,我已经更改了代码,在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) 所以我的文字比他们占用的一些组件要长一些.我已经为大多数问题提出了合理的解决方案,但我不知道如何处理组合框中的非常长的文本项.如果用户看不到文本,他就无法做出正确的决定 - 特别是如果文本的第一部分匹配.请参阅下面的我的SSCCE.
我使用JScrollpane来解决JTextfield中的长文本问题,并且我使用工具提示来解析JXhyperlink字段中的长文本.另外,我为组合框提供了一个工具提示,它可以在选择后显示一个长项,但理想情况下我想在用户做出选择之前将该选项提供给用户.这个代码示例使用Netbeans的GUI设计器(非常适合RAD目的)放在一起,布局是GUI设计者使用的GroupLayout.
package longtextsexample;
import javax.swing.JFileChooser;
public class MainFrame extends javax.swing.JFrame {
/**
* Creates new form MainFrame
*/
public MainFrame() {
initComponents();
}
/**
* This method is called from within the constructor to initialize the form.
*/
@SuppressWarnings("unchecked")
private void initComponents() {
jScrollPane1 = new javax.swing.JScrollPane();
jTextField1 = new javax.swing.JTextField();
jComboBox1 = new javax.swing.JComboBox();
jXHyperlink1 = new org.jdesktop.swingx.JXHyperlink();
jButton1 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jScrollPane1.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
jScrollPane1.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);
jScrollPane1.setViewportView(jTextField1);
jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 222222222222222222222222", …Run Code Online (Sandbox Code Playgroud) 我一直在一个项目中使用 NetBeans,并在 riouxsvn.com 上托管一个 Subversion 存储库,但最近服务器突然宕机了,并且一直如此。由于服务器已关闭,我无法使用其“从 URL 导入”功能将其导入到 assembla 中。因此,现在我需要在 assembla.com 的新存储库中签入代码,但使用菜单选项Team > Relocate会出现以下错误:
org.tigris.subversion.javahl.ClientException:svn:“ https://subversion.assembla.com/svn/opmtoolset ”处的存储库具有uuid“36c7bd81-9045-4dfa-9d2c-2ba0fa0ee7f3”,但WC具有“7f9aa1f8” -8c2b-44dd-b220-ac62e04eeab0'
您可能正在尝试重新定位到错误的存储库。您的工作副本是从另一份工作副本创建的。再次检查网址。
您还可以签出目标存储库并创建新的工作副本。
我理解基本消息,但我不确定如何解决它。我发现我现在有两个存储库(新的存储库显然是空的)并且 UUID 不同,但我希望告诉 NetBeans 我想要重新定位是一种可行的方法。
所以我的问题是:有没有办法告诉 NetBeans 我想为我的存储库使用新的 URL?
次要问题:如果存储库(显然)没有按照我期望的方式工作,我该如何解决这个问题?我是否要在 NetBeans 中创建一个新项目并在新主机上再次签入所有代码?那么,NetBeans 中的Relocate函数有什么作用呢?