可能有人告诉我如何我的GUI连接到我的基类 我已经写了图形用户界面和设计,但现在需要的GUI与其他类我做交互。聘任制度Swing GUI的
编辑:添加更新的代码,以我的线程,增加了新的方法,按下按钮时,以文本打印出来给的TextField。即显示约会,显示按钮旁边的文本字段中的所有约会。 此外,需要尝试,并添加了一个选项,用户使用公历格式
package com.appointmentsys;
import javax.swing.JFrame;
import java.util.GregorianCalendar;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
*
* @author Daniel Burke
*
*/
public class ControllerGUI extends JPanel implements ActionListener{
static JButton button1;
static JButton button2;
static JButton button3;
static JButton button4;
static JTextField ta;
static JTextField ta1;
static JTextField ta2;
static JTextField ta3;
AppointmentBook appBook = new AppointmentBook();
public void MainForm(){
button1.addActionListener(this);
button2.addActionListener(this);
button3.addActionListener(this);
button4.addActionListener(this);
ta.addActionListener(this);
ta1.addActionListener(this);
ta2.addActionListener(this);
ta3.addActionListener(this);
}
public static void CreateandShowGUI(){
JFrame frame = new JFrame();
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(10,10));
button1 = new JButton("Add appointment");
ta = new JTextField();
/*
TextAreaOutputStream taos = new TextAreaOutputStream(ta, 60);
PrintStream ps = new PrintStream(taos);
System.setOut(ps);
System.setErr(ps);
*/
button2 = new JButton("Remove appointment");
ta1 = new JTextField();
button3 = new JButton("Show appointment");
ta2 = new JTextField();
button4 = new JButton("Search appointments");
ta3 = new JTextField();
frame.setContentPane(panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
panel.add(new JLabel(" "));
panel.add(new JLabel(" Please select an option: "));
panel.add(new JLabel(" "));
panel.add(new JLabel(" "));
panel.add(button1);
panel.add(ta);
panel.add(button2);
panel.add(ta1);
panel.add(button3);
panel.add(ta2);
panel.add(button4);
panel.add(ta3);
panel.setBorder(BorderFactory.createTitledBorder("Appointment System"));
}
public class EventHandler implements ActionListener{
public void actionPerformed(ActionEvent e){
if(e.getSource() == button1){
appBook.add(new Appointment(new GregorianCalendar(2015, 8+1, 1, 11, 30), new GregorianCalendar(2015, 10, 14, 11, 30), "Dyland"));
}
else if(e.getSource() == button3){
String appointmentInfo = appBook.getAppointment(0).toString();
ta2.setText(appointmentInfo);
}
}
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable(){
public void run(){
CreateandShowGUI();
}
});
}
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
}
}
package com.appointmentsys;
import java.util.ArrayList;
import java.util.GregorianCalendar;
/**
*
* Controller class will test Appointment/AppointmentBook
* @author Daniel Burke
*
*/
public class Controller {
public static void main(String[] args) {
Appointment a1 = new Appointment(new GregorianCalendar(2015, 8+1, 14, 10, 30), new GregorianCalendar(2015, 10, 14, 11, 30), "Danny");
Appointment a2 = new Appointment(new GregorianCalendar(2015, 8+1, 20, 9, 00), new GregorianCalendar(2015, 10, 20, 10, 10), "JOhn");
Appointment a3 = new Appointment(new GregorianCalendar(2015, 8+1, 21, 14, 00), new GregorianCalendar(2015, 10, 21, 16, 00), "Steve");
Appointment a4 = new Appointment(new GregorianCalendar(2015, 8+1, 21, 14, 00), new GregorianCalendar(2015, 10, 21, 16, 00), "Patrick");
AppointmentBook appBook = new AppointmentBook();
appBook.add(a1);
appBook.add(a2);
appBook.add(a3);
appBook.add(a4);
System.out.println("Appointment is in book: " + appBook.isInBook(a1));
System.out.println("Appointment is in book: " + appBook.isInBook(a4));
//appBook.remove(a1);
appBook.ShowAppointments();
}
}
package com.appointmentsys;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class Appointment {
//Appointments have start/end times & dates.
//Every appointment has a title.
private GregorianCalendar startDateTime;
private GregorianCalendar endDateTime;
private String eventTitle;
//default constructor
public Appointment(){
this.startDateTime = null;
this.endDateTime = null;
this.eventTitle = "";
}
//constructor
public Appointment(GregorianCalendar startDate, GregorianCalendar endDate, String eventTitle){
this.startDateTime = startDate;
this.endDateTime = endDate;
this.eventTitle = eventTitle;
}
public GregorianCalendar getStartDateTime() {
return startDateTime;
}
public void setStartDateTime(GregorianCalendar startDateTime) {
this.startDateTime = startDateTime;
}
public GregorianCalendar getEndDateTime() {
return endDateTime;
}
public void setEndDateTime(GregorianCalendar endDateTime) {
this.endDateTime = endDateTime;
}
public String getEventTitle() {
return eventTitle;
}
public void setEventTitle(String eventTitle) {
this.eventTitle = eventTitle;
}
//toString() method to represent an appointment object
public String toString(){
String strdate = null;
int hours = 0;
String hrs = null;
int mins = 0;
String min = null;
SimpleDateFormat sdf = new SimpleDateFormat("MM/DD/YYYY");
if (getStartDateTime() != null){
strdate = sdf.format(getStartDateTime().getTime());
hours = getStartDateTime().get(Calendar.HOUR);
hrs = Integer.toString(hours);
mins = getStartDateTime().get(Calendar.MINUTE);
min = Integer.toString(mins);
}
String s = getEventTitle()+" "+ strdate+" "+ hrs +": "+min;
return "Appointment: \n" + s;
}
}
package com.appointmentsys;
import java.util.ArrayList;
public class AppointmentBook {
private static final int NOTFOUND = -1; //NOTFOUND int constant
//We can use an ArrayList to store appointments (you could use a database)
private ArrayList<Appointment> appointmentList = new ArrayList<Appointment>();
//add method to appointmentbook
/**
* Adds appointments to the appointmentList
* @param a
*/
public void add(Appointment a){
appointmentList.add(a);
}
/**
* create a new arrayList for all appoints then return all
* @return
*/
public ArrayList<Appointment> getAllAppointments(){
ArrayList<Appointment> all = new ArrayList<Appointment>(appointmentList);
return all;
}
/**
* Prints out the list of all the appointsment made
*
*/
public void ShowAppointments()
{
ArrayList<Appointment> all = new ArrayList<Appointment>(appointmentList);
System.out.println();
System.out.print("All appointments: \n");
for(Appointment a: all)
{
System.out.println(a);
System.out.println();
}
}
/**
* returns -1 if no appointment is found
* @param tofind
* @return
*/
private int find(Appointment tofind)
{
int i = 0;
for(Appointment a: appointmentList)
{
if(a.equals(tofind)) return i;
i++;
}
return NOTFOUND;
}
/**
* removes an appointment from the appointmentList
* @param toRemove
*/
public void remove(Appointment toRemove){
int location = find(toRemove);
if(location != NOTFOUND) appointmentList.remove(location);
else
throw new IllegalArgumentException("Appointment not found");
}
/**
*
* @param a
* @return
*/
public boolean isInBook(Appointment a){
return find(a) != NOTFOUND;
}
public String getAppointment(int i) {
return appointmentList.get(i).toString();
}
}
如果你不知道如何“连接”两个类,你应该学习基础知识,而不是编写UI代码。 – Stultuske