Aplikacja w SWING

0

Witam. Uczę się projektować za pomocą Swinga. Mam problem, ponieważ chciałbym aby wpisywane dane w polu tekstowym JTextField były wyświetlane w oknie niżej który jest w postaci JList. Nie mam pojęcia jak to ugryźć. Proszę także o podpowiedź jak przesunąć moje dwa buttony OK i Zamknij na sam dół okna. Pozdrawiam

Screen jest w załączniku.

a oto mój kod:

Klasa Ramka:

import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Ramka extends JFrame {

    JLabel jLabel = new JLabel();


    public Ramka() {

        Toolkit zestaw = Toolkit.getDefaultToolkit();
        setResizable(false);
        setSize(szerokosc,wysokosc);
        setTitle("Aplikacja");
        //Tworzenie panelu
        JPanel panel = new JPanel();
        Container container = getContentPane();
        container.add(panel);
        //Dodawanie pola tekstowego do panelu
        JTextField poletext = new JTextField(35);
        panel.add(poletext);
        //pobieranie i wyświetlanie wpisanego tekstu
        poletext.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String input = poletext.getText();
                jLabel.setText(input);
            }
        });
        JList list = new JList();

        list.setVisibleRowCount(4);
        //to wyswietla tekst
        panel.add(jLabel);
        //dodawanie jlist
        panel.add(list);
        panel.add(new JScrollPane(list));
        list.setSize(400,100);
        //Wstawianie buttonów
        JButton button1 = new JButton("OK");
        JButton button2 = new JButton("Zamknij");
        panel.add(button1, BorderLayout.WEST);
        panel.add(button2, BorderLayout.SOUTH);

        button1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String input = poletext.getText();
                jLabel.setText(input);
            }
        });

        button2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.exit(0);
            }
        });

        //ikonka
        Image rys = zestaw.getImage("ikonka.png");
        setIconImage(rys);
    }
    public static final int szerokosc = 400;
    public static final int wysokosc = 300;
}

Klasa Main:

public class Test {

    public static void main(String[] args) {

        Ramka ramka = new Ramka();
        ramka.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        ramka.setVisible(true);
    }


}
1

Ekspertem od swinga nie jestem, ale zdaje się działać:

package kamil;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;

public class Ramka extends JFrame {

	JLabel jLabel = new JLabel();

	public Ramka() {

		Toolkit zestaw = Toolkit.getDefaultToolkit();
		setResizable(false);
		setSize(szerokosc, wysokosc);
		setTitle("Aplikacja");
		// Tworzenie panelu
		JPanel panel = new JPanel();
		Container container = getContentPane();
		container.add(panel);
		// Dodawanie pola tekstowego do panelu
		JTextField poletext = new JTextField(35);
		panel.add(poletext);
		// pobieranie i wyświetlanie wpisanego tekstu
		poletext.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				String input = poletext.getText();
				jLabel.setText(input);
			}
		});

		DefaultListModel model = new DefaultListModel();
		JList list = new JList(model);

		list.setVisibleRowCount(4);
		// to wyswietla tekst
		panel.add(jLabel);
		// dodawanie jlist
		panel.add(list);
		panel.add(new JScrollPane(list));
		list.setSize(400, 100);
		// Wstawianie buttonów
		JButton button1 = new JButton("OK");
		JButton button2 = new JButton("Zamknij");
		panel.add(button1, BorderLayout.WEST);
		panel.add(button2, BorderLayout.SOUTH);

		button1.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				String input = poletext.getText();
				model.addElement(input);
			}
		});

		button2.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				System.exit(0);
			}
		});

		// ikonka
		Image rys = zestaw.getImage("ikonka.png");
		setIconImage(rys);
	}

	public static final int szerokosc = 400;
	public static final int wysokosc = 300;
}
0

Dzięki! Działa :) Pomoże ktoś jeszcze z usytuowaniem buttonów?

0

Znalazłem rozwiązanie w stylu..setFixedCellWidth() ale nie wiem czy to jest elegancko czy takie wymuszone

0

http://www.java2s.com/Tutorial/Java/0240__Swing/WhatistheBorderLayout.htm

Potestuj tez z innymi layoutami np GridBagLayout

1 użytkowników online, w tym zalogowanych: 0, gości: 1