抱歉,如果以前有人问过这个问题,但我花了很长时间搜索都没有成功。
我有一个面板,我试图使用GridBagLayout添加一些组件。
问题是,出于某种原因,我无法理解-我试图添加的JTextArea似乎忽略了分配给它的宽度-它似乎接受高度没有问题。
除了文本区域之外,所有组件都添加得很好——文本区域的宽度应该为3,但显示宽度为1。
我不明白为什么会这样,有人能帮忙吗?
提前感谢您的帮助。
代码:(编辑)
public class Main {
public static void main(String[] args) {
Content master = new Content();
master.createAndShowGui();
}
}
package test;
//import declarations
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
public class Content
{
//declare class variables
private JDialog schoolFrame = new JDialog();
private JPanel schoolPanel = new JPanel(new GridBagLayout());
private JTextArea text = new JTextArea();
private JButton exit = new JButton("Quit");
private JButton portView = new JButton("View Portfolio");
private JButton payView = new JButton("View Payment Info");
private GridBagConstraints c = new GridBagConstraints();
private JLabel payAmount = new JLabel("",SwingConstants.CENTER);
private JButton subPayment = new JButton("Submit Payment");
private JLabel subLabels[] = new JLabel[5];
private JTextField subFields[] = new JTextField[5];
private JButton subGradeChange = new JButton("Submit Changes");
JLabel tester = new JLabel();
JLabel tester2 = new JLabel("jjjjjjj");
public Content(){
}
private void setOptions(JComponent b,int weightx,int weighty,int x,int y,int width,int height)
{
c.fill = GridBagConstraints.BOTH;
c.weightx = weightx;
c.weighty = weighty;
c.gridy = y;
c.gridx = x;
c.gridwidth = width;
c.gridheight = height;
schoolPanel.add(b, c);
}
//method to create and display the GUI
public JDialog createAndShowGui()
{
c.fill = GridBagConstraints.BOTH;
c.insets = new Insets(0,0,0,0);
schoolFrame.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
schoolFrame.setContentPane(schoolPanel);
schoolFrame.setMinimumSize(new Dimension(600,600));
schoolFrame.setMaximumSize(new Dimension(600,600));
text.setEditable(false);
schoolFrame.setModal(true);
schoolFrame.setTitle("Simple School System: House Head");
setOptions(tester, 1, 1, 2, 0, 1, 1);
setOptions(portView,1,1,0,0,2,1);
setOptions(text,1,1,2,0,3,7);
for(int i=0;i<subLabels.length;i++){
subLabels[i] = new JLabel();
subFields[i] = new JTextField();
subLabels[i].setText("Subject: ");
subFields[i].setText("Enter Grade");
setOptions(subLabels[i],1,1,0,i+1,1,1);
setOptions(subFields[i],1,1,1,i+1,1,1);
}
setOptions(subGradeChange,1,1,1,6,1,1);
setOptions(exit,1,1,0,6,1,1);
exit.addActionListener
(
new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
int quit = JOptionPane.showConfirmDialog(null,"Exit","Are you sure",JOptionPane.YES_NO_OPTION);
if(quit==0)
{
System.exit(0);
}
else
{
schoolFrame.dispose();
hideUpdate();
}
}
});
//pack components before displaying frame
schoolFrame.pack();
text.setPreferredSize(text.getPreferredSize());
schoolFrame.pack();
schoolFrame.setLocationRelativeTo(null);
schoolFrame.setVisible(true);
return schoolFrame;
}
//method to update the contents of the frame
private void hideUpdate()
{
schoolFrame.setVisible(false);
schoolFrame.pack();
schoolFrame.repaint();
schoolFrame.pack();
schoolFrame.setVisible(true);
}
}
要计算3列的宽度,第2列和第3列中应该有一些内容。
所以事实上,您将所有组件添加到一列中。LayoutManager无法计算列2和3的宽度,因为列中没有组件。因此,它们的宽度为0,文本区域的宽度=第1列宽度0 0
本文向大家介绍Git 检查文件是否被忽略,包括了Git 检查文件是否被忽略的使用技巧和注意事项,需要的朋友参考一下 示例 该git check-ignore命令报告Git忽略的文件。 您可以在命令行上传递文件名,git check-ignore并将列出被忽略的文件名。例如: 在此,.gitignore中仅定义了* .o文件,因此Readme.md未在.git的输出中列出git check-igno
我已经添加了JVM start参数: 但在原木里我看到了
我一直在使用cat合并一堆csv文件,然后使用排序删除复制文件,然后导入到MySQL。与处理大量csv文件一样肮脏的工作可能是一帆风顺的,直到我发现我的一些数据没有进入数据库。 我发现在合并文件的过程中,在某些情况下,列名(csv文件的第一行)被抛到了其他列中。结果是,当我使用排序删除重复并吐出一个新文件时,它只输出到csv文件中列名被抛入新未使用列的行。 我使用猫如下: 并排序为 然后我让我的方
我的库需要连接到任意的AWS-IoT帐户,因此我在实例化AWS客户端时传递所需的凭据: 根据boto3文档(摘录如下),以这种方式传递的凭据应该覆盖所有其他凭据。然而,此调用从Boto3生成以下日志消息: 我真的不希望boto3拾取用户可能在他们的系统上配置的任何凭据——我希望它只使用我传递给boto3.client()的凭据。有什么想法如何确保这一点? 两份文件摘录:
我在父pom的imported dependencyManagement部分中指定了库的版本。我确认我的有效pom只有一次出现这种依赖性。它位于dependencyManagement部分: 这将根据它覆盖可传递依赖项的版本。安装(并重新安装依赖项以匹配版本边界)后,组织。阿帕奇。专家插件:maven依赖插件:2.8:树打印: 但是(最初,没有重新安装依赖项)enforcer抱怨版本错误: 并显示
问题内容: 我有一个由命令(使用任务)生成的文件。我不想将其添加到git存储库中,也不想添加到NPM项目中。 假设文件名是,我将其添加到文件中。 这足以避免将其上传到NPM注册表中吗? 我知道我可以添加肯定会忽略该文件的文件,但是如果已经这样做,则不会添加它。 问题答案: 如果项目同时具有和文件,则npm将 仅 使用该文件。 从文档中: 使用文件将东西从包装中取出。如果没有文件,但有 是 一个文件