我是JavaSwing的新手,我必须编写一个如下所示的接口:
它是一个复选框,后跟一个文本字段,然后是一个按钮。不要介意虚线,我添加它们只是为了使“网格”可见,我知道我可以制作一个组件并为复选框、文本和按钮重用,这样布局就简单多了。我只是想了解GridbagLayout的怪癖。
基本上,第一行应该有2列,第二行和第三行应该有6列。为此,我尝试使用GridBagLayout,但结果不是预期的,我不确定我是否遗漏了什么,或者如果没有内部面板就不可能做到这一点。这是我的课:
import javax.swing.*;
import java.awt.*;
public class GridBagLayoutTest extends JFrame {
JPanel panel = new JPanel();
public GridBagLayoutTest(){
setTitle("Grid Bag Layout Test");
GridBagLayout layout = new GridBagLayout();
panel.setLayout(layout);
GridBagConstraints gbc = new GridBagConstraints();
setLayout(new GridBagLayout());
gbc.anchor = GridBagConstraints.NORTHWEST;
gbc.weightx=1; // set to use all horizontal space available
gbc.weighty=0;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.insets = new Insets(2,2,2,2);
// Labels line. Each label should be 50%
gbc.gridx = 0;
gbc.gridy = 0;
panel.add(new JLabel("Label 1"), gbc);
gbc.gridx = 1;
gbc.gridy = 0;
panel.add(new JLabel("Label 2"), gbc);
// Checkbox left group. The three components should take 50% of the total width
gbc.gridx = 0;
gbc.gridy = 1;
panel.add(new JCheckBox("Ind 1"), gbc);
gbc.gridx = 1;
gbc.gridy = 1;
panel.add(new JTextField(), gbc);
gbc.gridx = 2;
gbc.gridy = 1;
panel.add(new JButton("..."), gbc);
// Checkbox right group. The three components should take 50% of the total width
gbc.gridx = 3;
gbc.gridy = 1;
panel.add(new JCheckBox("Ind 1"), gbc);
gbc.gridx = 4;
gbc.gridy = 1;
panel.add(new JTextField(), gbc);
gbc.gridx = 5;
gbc.gridy = 1;
panel.add(new JButton("..."), gbc);
setContentPane(panel);
this.setSize(800,200 );
setPreferredSize(getSize());
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}
如果没有内部面板就可以实现这一点,那么我的代码中缺少了什么?
gbc.gridx = 0;
gbc.gridy = 0;
panel.add(new JLabel("Label 1"), gbc);
gbc.gridx = 1;
gbc.gridy = 0;
panel.add(new JLabel("Label 2"), gbc);
第二个标签应从第3列开始:
gbc.gridx = 0;
gbc.gridy = 0;
panel.add(new JLabel("Label 1"), gbc);
gbc.gridx = 3; // changed
gbc.gridy = 0;
panel.add(new JLabel("Label 2"), gbc);
问题内容: 标准对象工厂可能如下所示: 是否可以设置绑定以便为我完成切换,即我要做的就是调用getInstance或inject?我当时在看辅助注射,但这似乎是另外一个话题:https : //code.google.com/p/google- guice/wiki/AssistedInject 问题答案: 听起来您正在寻找,这是多重绑定功能的一部分。请注意,您仍然需要放入某种工厂接口或其他工厂接
标准对象工厂可能如下所示: 是否可以设置绑定以便为我完成切换,即我所做的只是调用 getInstance 或注入?我正在研究辅助注射,但这似乎是不同的主题:https://code.google.com/p/google-guice/wiki/AssistedInject
null null 这将创建2行,第一行高度为100px,第二行高度为。第二行中的2列具有宽度。 是否可以通过CSS网格/FlexBox将第2行的2列水平居中?即。每行的列数不同。 我正试图解决浏览器中CSS网格框架的一个琐碎的使用问题。如果使用FlexBox构建网格,这是很容易实现的。 但是我能用CSS网格实现它吗? 这里是一个我试图实现的代码本演示。
我可以创建一个协议在不同的主机名上运行吗?我一直在使用协议规则,并保持主机名为localhost。但现在我正在尝试为一个不能在localhost上运行的应用程序创建一个协议。 @rule public PactProviderRule provider=new PactProviderRule(“ServiceNowClientrestClientProvider”,“localhost”,808
我试图计算一个折扣,我想应用到我的数据帧的两列中的每一行,并将结果添加到一个新列中。 我已经尝试了很多方法,通过遵循现有的例子,但是每次都发生错误。 我将函数定义为: 然后尝试将该函数应用于我的数据框 我希望有一个新的列,其中每一行都是应用于ordini[“revenue1”]和ordini[“revenue2”]的函数的结果。 但我得到了以下错误: ValueError:序列的真值不明确。使用a
我想创建一个包含XFA数据的PDF,但我不想在查看PDF时看到XFA数据,但是,我希望可以通过以下代码访问它: 我怎么能这样呢? 谢谢