私は目的を学習するために、Java SwingでUIを作成しようとしています。 main.javaファイルとパネルコンポーネントを分離しようとするまで、私はAutobahnを実行していました。私がここでやろうとしたのは、別の割り当てのクラスを別々に作成して、main.javaファイルを短くして、自分の独立した割り当てファイルを簡単に変更できるようにすることでした。 私は、単一のファイルに入れたときに動作する予想される結果と、切り離されたコードを投稿します。GUI Stackoverflowerror
Main.java
package gui;
import java.awt.CardLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
public class Main {
//Basic Components
JFrame frame = new JFrame();
JMenuBar menubar = new JMenuBar();
JMenu menuPanels = new JMenu("Assignments");
JMenuItem assign_1 = new JMenuItem("Assignment 1");
JMenuItem assign_2 = new JMenuItem("Assignment 2");
JMenuItem assign_3 = new JMenuItem("Assignment 3");
JPanel panel = new JPanel();
JPanel pnlAss_1 = new JPanel();
JPanel pnlAss_2 = new JPanel();
JPanel pnlAss_3 = new JPanel();
CardLayout cardLayout = new CardLayout();
public Main()
{
panel.setLayout(cardLayout);
Assignment_1 pnlAss_1_class = new Assignment_1();
pnlAss_1 = pnlAss_1_class.CreatePanel(pnlAss_1);
panel.add(pnlAss_1, "pnlAss_1");
panel.add(pnlAss_2, "pnlAss_2");
cardLayout.show(panel, "pnlAss_1");
//Menubars and menupanels
menubar.add(menuPanels);
menuPanels.add(assign_1);
menuPanels.add(assign_2);
assign_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent E)
{
cardLayout.show(panel, "pnlAss_1");
}
});
assign_2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
cardLayout.show(panel, "pnlAss_2");
}
});
frame.setJMenuBar(menubar);
frame.add(panel);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.setSize(800, 300);
frame.setVisible(true);
}
public static void main(String[] ar)
{
new Main();
}
}
Assignment_1.java
package gui;
import java.awt.CardLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class Assignment_1 extends Main {
JLabel ID, Name, Contact, Address; JLabel Intro;
JTextField id, name, contact, address;
JButton close;
Assignment_1()
{
}
JPanel CreatePanel(JPanel panel)
{
panel.setSize(500, 300);
panel.setLayout(null);
Intro = new JLabel("First Assignment"); Intro.setBounds(10, 10, 300, 20);
panel.add(Intro);
//Labels definition & addition
ID = new JLabel("Student ID"); ID.setBounds(10, 30, 100, 20);
Name = new JLabel("Name"); Name.setBounds(110, 30, 100, 20);
Contact = new JLabel("Phone Number"); Contact.setBounds(210, 30, 100, 20);
Address = new JLabel("GitHub Address"); Address.setBounds(310, 30, 100, 20);
panel.add(ID); panel.add(Name); panel.add(Contact); panel.add(Address);
//TextFields definition & addition
id = new JTextField("2012203079"); id.setBounds(10, 50, 100, 20); id.setEditable(false);
name = new JTextField("정상원"); name.setBounds(110, 50, 100, 20); name.setEditable(false);
contact = new JTextField("010-8611-9898"); contact.setBounds(210, 50, 100, 20); contact.setEditable(false);
address = new JTextField("https://github.com/swj0418"); address.setBounds(310, 50, 160, 20); address.setEditable(false);
panel.add(id); panel.add(name); panel.add(contact); panel.add(address);
//Buttons definition& addition
close = new JButton("Close");
close.setBounds(400, 100, 70, 30);
close.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
panel.add(close);
return panel;
}
}
私はここでの問題は、JFrameのに何かを持っていると思います。 私はAssignment_1と対称であるため、Assignment_2 javaを投稿していません この問題に関して私を助けてください。
をいずれかを使用していないとして継承したいscroll down toパソコンへ転送場合は、メインを拡張し削除してみてくださいあなたがまだ1つを使用する方法を学んでいない場合、今は完璧な機会です。デバッガでコードをステップ実行する方法を学習することは、開発者のツールボックスで最も重要なツールの1つであり、使用方法を学ぶのは早すぎることはありません。 –