GUI Netbeans - automatyczne powiekszanie JDialog.

0

Mam takie okno dialogowe:

user image

Po naciśnięciu AddReport albo AddCommand pojawia się nowy JTextField i nowy JLabel.
Chciałbym to jednak zrobić w taki sposób alby nie pozostawiać wolnego miejsca tam, gdzie są stworzone te komponenty (po naciśnięciu przycisku są tylko odsłaniane), ale rozszerzać okno po ich pojawieniu się.
Pomoże ktoś?

0

Jeśli te komponenty są w różnych JPanel to może po prostu ustaw stały rozmiar + jscrollpane bo jeśli ustawisz rozciąganie to w pewnym momencie zabraknie ci ekranu?

0

To jest JDialog. Więc jak ustawić w nim, żeby po przekroczeniu maksymalnej wielkości pojawiał się scroll?

0

Ktoś wie jak całemu JDialog ustawić stały rozmiar maxymalny i dodać scroll w pionie?

0

Nie jest to jakieś eleganckie ale na szybko mogło by to wyglądać tak:

 
package dotestow;

import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;

public class test extends JFrame {
	         //konstruktor
		smiec3(){
                       //init
			initComponent();
		}
		private void initComponent(){
                       //layout dla panelu 1 i glownego
			panel1.setLayout(new GridLayout(1,1));
			mainPanel.setLayout(new FlowLayout());
			panel1.add(button1);
			mainPanel.add(panel1);
                        //staly rozmiar dla frame
			frame.setSize(new Dimension(100,100));
			frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                        frame.setEditable(false);
			frame.setVisible(true);
			frame.add(mainPanel);
			frame.setTitle("Glowne Okno");
			button1.addActionListener(new ActionListener(){
				public void actionPerformed(ActionEvent e){
                                        //staly rozmiar dla JDialog +title
					dialog.setSize(new Dimension(400,400));
					dialog.setTitle("JDialog okno");
                                       //Layout dla panelu w JDialog (to ten panel o którym pisałem wcześniej
					dPanel.setLayout(new GridLayout(20,1));
                                        //wypelniam panel przyciskami od 0 do 19  JButton[20];
                                        //oczywiście zamiast tego wypełniacza wstawiasz ten twój kod
					for(int i= 0;i<20;i++){
                                               // zamieniam int i na stringa pozniej dodaje do dPanel przycisk i nadaje mu nazwe Stringa s 
						String s = String.valueOf(i).toString();
						dPanel.add(button[i]=new JButton(s));
					}
                                        //nie wiem jak to wytłumaczyć po prostu ma być ;]
					pane.setViewportView(dPanel);
                                        //dodaje JScrollPanel do JDialog
					dialog.add(pane);
                                        //bez tego nie wyswietli sie JDialog ale to zapewne juz wiesz ;]
					dialog.setVisible(true);
				}
			});		
		}
		private JButton button[] = new JButton[20];
		private JPanel dPanel = new JPanel();
		private JScrollPane pane = new JScrollPane();
		private JDialog dialog = new JDialog();
		private JFrame frame =new JFrame();
		private JPanel mainPanel= new JPanel();
		private JPanel panel1 = new JPanel();
		private JButton button1= new JButton("Przycisk");
}

i wywołanie gdzieś tam:

 
public class MainClass {


	public static void main(String[] args) {
		test s = new test();
        }
}

Mam nadzieję ze to rozwiąże twoje problemy ^^
Chciał bym z tego miejsca pozdrowić mamę, tatę i brata i, i jeszcze psa! ;]

PS. Aha ja to pisałem w eclipse wiec musiał byś sobie to zaimportować do netBeans jakoś albo w 2 stronę z netBeans do eclipse (co wydaje mi się prostsze) ja zawsze robię sobie szablony w netBeans a później importuje 2 biblioteczki do eclipse i wklejam kod no i oczywiście tam już sobie nanoszę poprawki.

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