从JTextField获取并添加到JList

时间:2016-06-22 20:06:54

标签: java user-interface jframe actionlistener jlist

我遇到了一个问题,我需要从JTextField获取一个文本,然后按键盘上的Enter键将其添加到JList中,并且可以通过按住Alt键单击列表从列表中删除所选项目。

我现在拥有的东西

# Imports
from tkinter import *
from tkinter import messagebox
import sys, datetime

class Window(Frame):

    def __init__(self, master = None):
        Frame.__init__(self, master)
        self.master = master
        self.init_window()

    def init_window(self):
        self.master.title("SPL - " + str(datetime.date.today()))
        self.configure(background="#e7e7e7")
        self.pack(fill=BOTH, expand=1)

        # Menu -> Quit, Open Log

        menu = Menu(self.master)
        self.master.config(menu=menu)

        file = Menu(menu)
        file.add_command(label="Open Log")
        file.add_command(label="Quit", command=self.client_exit)
        menu.add_cascade(label="File", menu=file)

        # Window Items

        # Office Drop Down
        OFFICES = [
            "County Building",
            "Adult Probation",
            "Building & Zoning",
            "Circuit Court",
            "    - CC. Family Division",
            "    - CC. Friend of the Court",
            "    - CC. Juvenile Division",
            "Clerk",
            "Commissioners",
            "Computer Infomration Systems",
            "Corporation Counsel",
            "District Court",
            "    - DC. Community Corrections",
            "    - DC. Magistrate Office",
            "    - DC. Probation Office",
            "Economic Development Corp.",
            "Equalization",
            "Maintenance",
            "Probate Court",
            "Prosecuting Attorney",
            "Public Guardian",
            "Register of Deeds",
            "Sheriff Department",
            "    - SD. Booking",
            "    - SD. Kitchen",
            "    - SD. Records",
            "    - SD. Squadroom",
            "Social Security",
            "Tax Mapping/GIS",
            "Treasurer",
            "Veteran's"
        ]

        officeLabel = Label(self, text="Office:", fg="#000000", bg="#e7e7e7", font="Verdana 10")
        officeLabel.place(x=5,y=5)

        officeOptionVar = StringVar()
        officeOptionVar.set(OFFICES[0]) # Default Value

        officeOption = OptionMenu(self, officeOptionVar, *OFFICES)
        officeOption.place(x=5,y=28,width=310)

        # Note
        noteLabel = Label(self, text="Note:", fg="#000000", bg="#e7e7e7", font="Verdana 10")
        noteLabel.place(x=5,y=58)

        noteText = Text()
        noteText.place(x=5, y=81, width=310, height=225)

        # Save Button
        saveButton = Button(self, text='Save', command=self.saveButtonCommand)
        saveButton.place(x=5, y=312, width=310, height=50)

    def client_exit(self):
        exit()

    def saveButtonCommand(self):
        office = officeOptionVar.get()
        note = noteText.get("1.0","end-1c")
        messagebox.showinfo(title="Test", message=note)

root = Tk()
root.resizable(0,0)

screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()

geo_width = 320
geo_height = 370
geo_offset_w = int((screen_width/2)-(geo_width/2))

root.geometry(str(geo_width) + "x" + str(geo_height) + "+" + str(geo_offset_w) + "+200")


app = Window(root)
root.mainloop()

它只显示空框架。

我会感激任何帮助。

2 个答案:

答案 0 :(得分:0)

您从未将任何组件添加到JFrame。这就是为什么它是空的。

答案 1 :(得分:0)

这种方式有效。

 JPanel inputPanel = new JPanel();
 inputPanel.setLayout(new BorderLayout());
 inputPanel.add(new JScrollPane(list));
 inputPanel.add(jText, BorderLayout.PAGE_END);
 getContentPane().add(inputPanel);