먼저 Java Desktop GUI를 프로그래밍하는 것이 처음이라고 지적하겠습니다. 여러 개의 JInternalFrames를 보유 할 수있는 데스크톱 창을 만들었습니다. 현재 각 JinternalFrame에는 동일한 GUI 구성 요소가 포함되어 있으며 메뉴 항목 클릭을 통해 새 jInternalFrame (내부 프레임이라고 함)을 만들 수 있습니다.다른 내부 프레임의 jTables에 대한 고유 한 데이터 모델 만들기
각 내부 프레임의 요소는 3 개의 Jlabels, 3 개의 JTextFields, Jbutton 및 Jtable입니다. 첫 번째 내부 프레임을 렌더링 한 후 3 개의 텍스트 필드에 정보를 채운 다음 버튼을 클릭하면 새 행이 테이블에 추가됩니다. 이 행에는 텍스트 필드를 채우는 데 사용되는 정보가 들어 있습니다.
두 번째 내부 프레임을 열면 첫 번째 인터페이스의 정확한 인터페이스가 시각적으로 나에게 표시됩니다. 같은 방식으로이 프레임을 채우고 단추를 클릭 한 다음 두 번째 프레임의 표가 채워집니다.
이전 내부 프레임으로 돌아갈 때 문제가 발생합니다. 난 텍스트 필드에 문제없이 입력 할 수 있지만 테이블을 채우려면 단추를 클릭하면 두 번째 내부 프레임의 테이블이 채워집니다. 나는 데이터 모델을 공유하고 있다고 생각하지만 각 프레임의 GUI가 동일 할 경우 jInternalFrame jTables에 대해 고유 한 데이터 모델을 만드는 방법에 대해서는 확신이 없습니다..
public class InternalFrames extends JFrame
implements ActionListener {
private static final long serialVersionUID = 1L;
JDesktopPane desktop;
JLabel label1;
JLabel label2;
JLabel label3;
JLabel label4;
JTextField text1;
JTextField text2;
JTextField text3;
JTable table1;
public InternalFrames(){
super("Practice Internal Frames");
int inset = 50;
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
setBounds(inset,inset,screenSize.width - (inset*2),screenSize.height - (inset*2));
desktop = new JDesktopPane();
createFrame();
setContentPane(desktop);
setJMenuBar(setMenuBar());
}
protected JMenuBar setMenuBar(){
JMenuBar menuBar = new JMenuBar();
JMenu menu = new JMenu("Document");
menu.setMnemonic(KeyEvent.VK_D);
menuBar.add(menu);
JMenuItem menuItem = new JMenuItem("New");
menuItem.setMnemonic(KeyEvent.VK_N);
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D, ActionEvent.ALT_MASK));
menuItem.setActionCommand("New");
menuItem.addActionListener(this);
menu.add(menuItem);
menuItem = new JMenuItem("Quit");
menuItem.setMnemonic(KeyEvent.VK_Q);
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, ActionEvent.ALT_MASK));
menuItem.setActionCommand("Quit");
menuItem.addActionListener(this);
menu.add(menuItem);
return menuBar;
}
public void actionPerformed(ActionEvent e){
if ("New".equals(e.getActionCommand())){
createFrame();
} else if ("Quit".equals(e.getActionCommand())){
}
}
protected void createFrame(){
InternalFrame internalFrame = new InternalFrame();
label1 = new JLabel("Name");
label2 = new JLabel("Email Address:");
label3 = new JLabel("Mobile Number:");
label4 = new JLabel("Test Frames");
label1.setSize(100,10);
label2.setSize(100,10);
label3.setSize(100,10);
label4.setSize(200,10);
text1 = new JTextField(40);
text2 = new JTextField(40);
text3 = new JTextField(40);
internalFrame.setLayout(new MigLayout());
internalFrame.getContentPane().add(label1);
internalFrame.getContentPane().add(text1, "wrap");
internalFrame.getContentPane().add(label2);
internalFrame.getContentPane().add(text2, "wrap");
internalFrame.getContentPane().add(label3);
internalFrame.getContentPane().add(text3,"wrap");
internalFrame.getContentPane().add(label4, "span 2, wrap");
internalFrame.getContentPane().add(new JScrollPane(createTable()), "span 2 2, wrap");
internalFrame.getContentPane().add(createButton());
internalFrame.setVisible(true);
desktop.add(internalFrame);
try {
internalFrame.setSelected(true);
} catch (java.beans.PropertyVetoException pve){ }
}
protected JTable createTable(){
DefaultTableModel dModel = new DefaultTableModel();
table1 = new JTable(dModel);
dModel.addColumn("Name");
dModel.addColumn("Email Address");
dModel.addColumn("Mobile Number");
return table1;
}
protected JButton createButton(){
JButton button1 = new JButton("Add New List Member");
button1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
//Execute when button is pressed
System.out.println("You clicked the button");
populateTable(table1);
}
});
return button1;
}
protected void populateTable(JTable theTable){
if (validateEntry() == 0)
{
ListMembers listMember = new ListMembers();
listMember.setName(text1.getText());
listMember.setEmailAddress(text2.getText());
listMember.setMobilePhone(text3.getText());
Object[] data = {listMember.getName(),listMember.getEmailAddress(),listMember.getMobilePhone()};
DefaultTableModel dm = (DefaultTableModel) table1.getModel();
dm.addRow(data);
}
}
private static void createAndShowGUI(){
JFrame.setDefaultLookAndFeelDecorated(true);
InternalFrames internalFrame = new InternalFrames();
internalFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
internalFrame.setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
상관 도움이 될 것이다 : - (매우 간단한 예를 들어 나는 내부 프레임 자체를 렌더링하는 오라클 어떻게에의 중 하나를 따라 자바 데스크탑 GUI 개발에 새로운 오전으로) 아래
코드입니다 대단히 감사합니다.
감사 등 빠른 응답. 내가 현지화 고려와 만난 사이에 모든 변수를 전달했다 hods 그러나 그것은 단지 틀리게 보였다. 나는 새로운 수업의 창작이 아마도 최선의 방법 일 것임에 동의한다. 나는 그것을 그렇게 구현할 것이다. 다시 한번 감사드립니다. – EastCanShan