0
이 코드를 GridBagLayout에 대해 테스트 한 결과이 코드에는 오류가 있지만 다른 코드에는 왜 오류가 있는지 궁금합니다. 이 코드는 예외 IllegalArgumentException: cannot add to layout: constraint must be a string (or null)
가지고 :Java - GridBagLayout과의 두 코드 비교 - IllegalArgumentException
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Layout extends JFrame
{
gridbag g=new gridbag();
public Layout()
{
add(g, BorderLayout.CENTER);
}
public static void main(String[]args)
{
Layout lay=new Layout();
lay.setSize(500, 500);
lay.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
lay.setLocationRelativeTo(null);
lay.setVisible(true);
}
class gridbag extends JPanel
{
private JLabel label=new JLabel("Test");
public gridbag()
{
setLayout(new GridBagLayout());
GridBagConstraints gbc=new GridBagConstraints();
Container container=getContentPane();
addC(label, container, gbc, 0, 0, 1, 4, 0, 0);
}
private void addC(Component c, Container container, GridBagConstraints gbc, int C, int R, int nC, int nR, double wX, double wY)
{
gbc.gridx=C;
gbc.gridy=R;
gbc.gridwidth=nC;
gbc.gridheight=nR;
gbc.weightx=wX;
gbc.weighty=wY;
container.add(c, gbc);
}
}
}
을하지만이 코드는 일 : 차이의
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
class gridbag extends JPanel
{
private JLabel label=new JLabel("Test");
public gridbag()
{
setLayout(new GridBagLayout());
GridBagConstraints gbc=new GridBagConstraints();
Container container=this;
addC(label, container, gbc, 0, 0, 1, 4, 0, 0);
}
private void addC(Component c, Container container, GridBagConstraints gbc, int C, int R, int nC, int nR, double wX, double wY)
{
gbc.gridx=C;
gbc.gridy=R;
gbc.gridwidth=nC;
gbc.gridheight=nR;
gbc.weightx=wX;
gbc.weighty=wY;
container.add(c, gbc);
}
public static void main(String[]args)
{
gridbag g=new gridbag();
JFrame frm=new JFrame();
frm.setSize(500, 500);
frm.add(g, BorderLayout.CENTER);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setLocationRelativeTo(null);
frm.setVisible(true);
}
}
하나는 JFrame
에 대한 새로운 Layout
클래스와 직접 두 번째 코드 사용 JFrame
거기에있다.