간단한 GUI로 작업 중이며 텍스트 필드에 어려움을 겪고 있습니다.텍스트 필드가 옆의 패널과 겹치지 않도록 텍스트 필드를 수정하려면 어떻게합니까?
이것이 내가 작업하고있는 것입니다. 오른쪽에있는 것이 보일 것으로 보이는 것이고, 왼쪽에있는 것은 내가 한 것입니다. 주소 1, 주소 2 등의 레이블을 넣었습니다. 그러나 텍스트 필드를 넣기 시작하면 사라졌습니다. setSize, setLocation을 사용해 보았지만 아무것도 작동하지 않습니다.
동일한 결과가 예상 결과에서 보이는 바와 같이 상단 패널 "Paymen Method"에 발생하며 텍스트 필드가 있어야합니다. 내 코드에 포함되어 있지만 실행할 때 표시되지 않습니다. 도와주세요.
여기 내 코드입니다 :
import javax.swing.*;
import java.awt.*;
public class PanelDemo extends javax.swing.JFrame{
private static final int FRAME_WIDTH = 300;
private static final int FRAME_HEIGHT = 350;
private static final int FRAME_X_ORIGIN = 150;
private static final int FRAME_Y_ORIGIN = 250;
public static void main(String[] args){
//Frame
JFrame contentPane = new javax.swing.JFrame();
contentPane.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
contentPane.setSize(300,350);
contentPane.setResizable(false);
contentPane.setLayout(new BorderLayout());
//Payment Panel
JPanel paymentPanel = new javax.swing.JPanel();
paymentPanel.setLayout(new BorderLayout());
//paymentPanel.setPreferredSize(new java.awt.Dimension(270, 90));
paymentPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Payment Method", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Arial", 1, 12)));
////Components inside Payment Panel
////A) Panels: Radio and Details
JPanel radioPanel = new JPanel();
radioPanel.setLayout(new GridLayout(3,1));
JRadioButton Rbutton1 = new JRadioButton("Credit Card");
JRadioButton Rbutton2 = new JRadioButton("E-Funds");
JRadioButton Rbutton3 = new JRadioButton("Check");
Rbutton3.setSelected(true);
ButtonGroup Bgroup = new ButtonGroup();
Bgroup.add(Rbutton1);
Bgroup.add(Rbutton2);
Bgroup.add(Rbutton3);
radioPanel.add(Rbutton1);
radioPanel.add(Rbutton2);
radioPanel.add(Rbutton3);
//I thought of using a panel as a gap, but still didn't work
/*JPanel gap = new JPanel();
gap.setLayout(new BorderLayout());
gap.setPreferredSize(new java.awt.Dimension(10, 90));*/
JPanel detailsPanel = new JPanel();
detailsPanel.setLayout(new GridLayout(2,1));
//detailsPanel
JLabel Accountnum = new JLabel("Account number:");
JTextField Account = new JTextField();
Account.setPreferredSize(new java.awt.Dimension(90, 40));
detailsPanel.add(Accountnum);
detailsPanel.add(Account);
paymentPanel.add(gap, BorderLayout.CENTER);
paymentPanel.add(detailsPanel);
paymentPanel.add(radioPanel);
contentPane.add(paymentPanel, BorderLayout.PAGE_START);
////Address Information Panel
JPanel addressPanel = new JPanel();
addressPanel.setLayout(new BorderLayout());
addressPanel.setSize(new java.awt.Dimension(270, 80));
addressPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Adress Information", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Arial", 1, 12)));
contentPane.add(addressPanel, BorderLayout.CENTER);
////Components inside the Address Information Panel
////A) Labels (Address 1, Address 2,...)
JPanel InfoLabel = new JPanel();
InfoLabel.setLayout(new GridLayout(5,1));
JLabel address1 = new JLabel("Address 1:");
JLabel address2 = new JLabel("Address 2:");
JLabel city = new JLabel("City:");
JLabel state = new JLabel("State:");
JLabel zip = new JLabel("Zip Code:");
InfoLabel.add(address1);
InfoLabel.add(address2);
InfoLabel.add(city);
InfoLabel.add(state);
InfoLabel.add(zip);
////B)Text Fields
JPanel infotext = new JPanel();
infotext.setLayout(new GridLayout(5,1));
JTextField text1 = new JTextField();
JTextField text2 = new JTextField();
JTextField text3 = new JTextField();
JTextField text4 = new JTextField();
JTextField text5 = new JTextField();
addressPanel.add(InfoLabel);
addressPanel.add(infotext);
JPanel controlPanel = new JPanel();
controlPanel.setLayout(new FlowLayout());
JLabel test = new JLabel("test");
controlPanel.add(test);
contentPane.add(controlPanel, BorderLayout.PAGE_END);
contentPane.setVisible(true);
}
}
대단히 감사합니다! – nutellafella
@ 대단한 일, 그것이 작동하도록하기 위해 당신이 한 일에 대한 약간의 설명은 우리의 영업을 교육하는 길을 간다.) – MadProgrammer
좋은 지적. 나는 약간의 생각, 감사를 더했다. –