【问题标题】:JTextArea not changing size vertically in MigLayoutJTextArea 没有在 MigLayout 中垂直改变大小
【发布时间】:2013-07-24 18:04:10
【问题描述】:

我的 java 程序中有一个名为 jta 的 JTextField,我希望它大约 4 行高,我在声明 TextField 时设置了大小,我还使用了 jta.setSize(),但我仍然无法让它更高。我认为这是因为 MigLayout 对组件的连续大小有限制。

这是我的代码片段:

static JTextArea jta = new JTextArea(10, 42);
//declaring the JTextArea
    jta.setFont(inputfont);
    jta.setBackground(Color.LIGHT_GRAY);
    jta.setForeground(Color.WHITE);
    jta.setLineWrap(true);
    jta.setWrapStyleWord(true);
    jta.setRows(4);
//setting the jta up
panel.add(jta,"w 100%, h 100%,span,wrap");\
//adding jta to the panel

这就是它的样子

如您所见,它只有一行文字,有什么帮助吗?

SSCCE:

import net.miginfocom.swing.MigLayout;

public class miglayout {

public static void main(String args[]) {
    MigLayout mg = new MigLayout("", "", "1");
    JFrame frame = new JFrame("jta SSCCE");
    JPanel panel = new JPanel();
    JLabel l1 = new JLabel("Row 1");
    JLabel l2 = new JLabel("Row 3");
    panel.setLayout(mg);
    frame.add(panel);
    JTextArea jta = new JTextArea(4, 40);
    panel.add(l1, "wrap");
    panel.add(jta, "wrap");
    panel.add(l2);
    frame.pack();
    frame.setVisible(true);
    }
}

如果你运行这段代码,你可以看到,即使我设置了 JTextArea 的大小,它仍然是一行,但是如果你注释掉 panel.setLayout(mg);,那么它就可以正常工作。

【问题讨论】:

  • 有理由使用静态吗?考虑发布 (SSCCE) [www.sscce.org] 以获得更好的更快答案。
  • @nachokk我正在以不同的方式使用它以使其可编辑、更改颜色等。什么是 SSCCE?
  • 简短的自包含正确示例,您发布可编译的代码,然后让想要帮助您的人,复制粘贴并可以测试代码,并且很容易
  • @nachokk 谢谢,一个问题我的代码有几百行,所以它一点也不短。
  • 考虑隔离您的问题并发布与您的问题相关的代码,这样我们和您也可以轻松测试。我以前从未使用过该布局,但布局通常尊重首选尺寸而不是尺寸。试试setPreferredSize()

标签: java swing jpanel layout-manager miglayout


【解决方案1】:

我不是使用此布局的专家,但感谢您发布 SSCCE。

如果你改变了

MigLayout mg = new MigLayout("", "", "1");

MigLayout mg = new MigLayout();

我明白了

【讨论】:

    猜你喜欢
    • 2012-12-20
    • 1970-01-01
    • 2023-03-26
    • 2013-12-11
    • 1970-01-01
    • 1970-01-01
    • 2012-10-07
    • 2012-02-12
    • 2013-12-23
    相关资源
    最近更新 更多