相关疑难解决方法(0)

JOptionPane中的文本换行?

我正在使用以下代码在我的swing应用程序中显示错误消息

try {
    ...
} catch (Exception exp) {
    JOptionPane.showMessageDialog(this, exp.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
}
Run Code Online (Sandbox Code Playgroud)

错误对话框的宽度很长,具体取决于消息.有没有办法包装错误信息?

html java swing exception joptionpane

29
推荐指数
2
解决办法
1万
查看次数

Swing GroupLayout:调整和限制组件大小

GroupLayout用来管理一些动态生成的数据输入表单中的组件.布局或多或少如此:

*-----------------------------------------------*
| label A     |   field A                       | 
| label B     |   field B                       |
| label C     |   field C                       |
*-----------------------------------------------*
Run Code Online (Sandbox Code Playgroud)

我使用2个并行组作为水平布局,使用单个顺序组作为垂直布局.在大多数情况下,一切都很好.

我想将标签的最大宽度(仅仅是实例JLabel)限制为父级宽度的1/3 JFrame.如果它JFrame是一个固定的大小,这将是微不足道的,但我必须处理它被调整大小.

我正在接收ComponentListener.componentResized()事件,JFrame但是一旦我收到这样的事件,我就会有点困惑.

我没有运气就试过这种方法:

public void componentResized(ComponentEvent e) {
    int maxW = parentFrame.getWidth() / 3;
    for (JLabel l : labels) {
        l.setMaximumSize( // have also tried setSize() and setPreferredSize()
            new Dimension(
                Math.min(l.getSize().width, maxW),
                l.getMaximumSize().height));
    }
    groupLayout.invalidateLayout(getContentSpace());
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以建议一种限制标签宽度的方法吗?

我可能每次都可以从头开始重建布局,但我觉得应该有一种更简单的方法.

java swing grouplayout

10
推荐指数
1
解决办法
2万
查看次数

动态添加textField时的setlayout

我加入的动态JTextField,并JLabelpanel1但我不能够设置的布局JTextFieldJLabel.我需要添加JTextfieldJLabelpanel1我补充panel1panel.我需要以上下方式添加JTextFields和JLabels并设置布局.panel1并且panel是JPanel的实例.

我的代码:

public class MakeScrollablePanel extends JFrame implements ActionListener
{

    static JButton jButton11,jButton12;
    static JPanel panel,panel1;
    static JTextField jTextFields;
    static JLabel label;
    static JComboBox<String> jComboBox;
    static Dimension dime,dime1,dime2,dime3,dime4,dime5;
    static JScrollPane scroll;
    private GridBagConstraints panelConstraints = new GridBagConstraints();  
    BoxLayout bx=null;//  @jve:decl-index=0:

    int count=1,i=0;

    public MakeScrollablePanel() 
    {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Show(); 

        add(jButton11);
        add(scroll);
        dime=new Dimension(600,550);
        setSize(dime); …
Run Code Online (Sandbox Code Playgroud)

java swing jtable

6
推荐指数
1
解决办法
431
查看次数

如何迭代地将组件添加到Swing GroupLayout ParallelGroup?

有没有办法迭代组件列表并将它们添加到Swing GroupLayout中的ParallelGroup?

这似乎很难,因为没有方法可以获得ParallelGroup.

以下是生成组件列表的代码(在本例中为JCheckBoxes).

List<JCheckBox> listCustomiseJCB = new ArrayList<>();
    for (int w = 0; w < initialCMTableColumns.size(); w++) {
        String heading = (String)initialCMTableColumns.get(w).getHeaderValue();
        listCustomiseJCB.add(new JCheckBox(heading));
    }
Run Code Online (Sandbox Code Playgroud)

列表正在工作,但我如何迭代List以将每个JCheckbox插入GroupLayout的ParallelGroup?例如,下面的代码将无法编译.

    GroupLayout gl = new GroupLayout(jpnlCustomise);
    jpnlCustomise.setLayout(gl);
    gl.setAutoCreateContainerGaps(true);
    gl.setAutoCreateGaps(true);

    GroupLayout.SequentialGroup hGroup = gl.createSequentialGroup();

    hGroup
            .addComponent(jbtnApply);
    hGroup.addGroup(gl.createParallelGroup(GroupLayout.Alignment.CENTER)
            // ERRORS BEGIN HERE
            { for (JCheckBox c: listCustomiseJCB) {
            .addComponent(c);
            }});
            // ERRORS END HERE
    hGroup
            .addComponent(jbtnCancel);

    gl.setHorizontalGroup(hGroup);
Run Code Online (Sandbox Code Playgroud)

或者,是否有人知道如何获取ParallelGroup以便我可以在独立的for循环中迭代地将组件添加到该组?

java swing grouplayout

5
推荐指数
1
解决办法
3553
查看次数

更改JTextPane的大小

我是Java的新手,我刚刚在StackOverflow中找到了这段代码:ResizeTextArea.

我想用JTextPane而不是JTextArea.在JTextPane,没有setRows()方法可以改变行数.任何帮助,将不胜感激.

java swing jtextpane jtextarea preferredsize

4
推荐指数
1
解决办法
3648
查看次数

GroupLayout在NetBeans中自动生成代码

在java编程工作了近4年之后,我决定学习如何自己编写GUI类,因为到目前为止我一直使用NetBeans GUI编辑器(我并不为此感到特别自豪,但它已经很好地避免了我对组件的担心布局).

问题是我正在关注如何使用GroupLayout教程来了解我觉得非常强大的布局管理器.现在我自己做了一个小例子,然后尝试在Netbeans GUI Editor中做同样的事情,我发现两个代码之间存在一些差异,我想知道我是否遗漏了某些内容,或者NetBeans只是在GroupLayout定义中添加了无用的代码.

这是我的目标:

在此输入图像描述

这是我的SSCCE:

public static void main(String[] args) {        
    JLabel label = new JLabel("This is a test");
    label.setFont(new Font("Segoe UI Semibold", Font.BOLD | Font.ITALIC, 24));

    JSeparator separator = new JSeparator(JSeparator.HORIZONTAL);

    DefaultListModel model = new DefaultListModel();
    model.addElement("Apple");
    model.addElement("Orange");
    model.addElement("Kiwi");
    model.addElement("Watermelon");

    JList list = new JList(model);
    list.setPreferredSize(new Dimension(400, 300));
    JScrollPane scrollPane = new JScrollPane();
    scrollPane.setViewportView(list);

    JFrame frame = new JFrame("Test");
    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);


    Container contentPane = frame.getContentPane();        
    GroupLayout layout = new GroupLayout(contentPane);
    layout.setAutoCreateContainerGaps(true);
    contentPane.setLayout(layout);

    layout.setHorizontalGroup(
            layout.createParallelGroup(GroupLayout.Alignment.LEADING) …
Run Code Online (Sandbox Code Playgroud)

java swing netbeans grouplayout

3
推荐指数
1
解决办法
2064
查看次数

JTextField滚动

我正在制作这个程序以获得乐趣,我因为程序在屏幕上运行而卡住了.如何实现滚动条而不必完全更改我的代码.

public static void main(String args[]) throws IOException 
    {

          String ai,ia,ny;
          JTextField field1 = new JTextField();
          JTextField field2 = new JTextField();
          JTextField field3 = new JTextField();
          JTextField field4 = new JTextField();
          JTextField field5 = new JTextField();
          JTextField field6 = new JTextField();
          JTextField field7 = new JTextField();
          JTextField field8 = new JTextField();
          JTextField field9 = new JTextField();
          JTextField field10 = new JTextField();
          JTextField field11 = new JTextField();
          JTextField field12 = new JTextField();
          JTextField field13 = new JTextField();
          JTextField field14 = new …
Run Code Online (Sandbox Code Playgroud)

java user-interface swing choice joptionpane

2
推荐指数
1
解决办法
3080
查看次数