Kalkulator powiększony

0

Cześć:)
prosiłbym o pomoc/nakierowanie w jaki sposób za pomocą kliknięcia w przycisk (widok->konwersja jednostek) w kalkulatorze Windows'owskim ramka się powiększa i chyba zostaje wyświetlony dodatkowy panel ("Wybierz typ jednostki który chcesz przekonwertować".

nie za bardzo wiem jak się do tego zabrać..dlatego z góry będę wdzięczny za wszelkie wskazówki (jakiego layout managera użyć?).

..podejrzewam, że klilnkięcie w przycisk wywołuje akcję w wyniku której panel jest widoczny- <nazwa dodatkowego="dodatkowego" panelu="panelu">.setVisible(true),
a na ramce wywołana została metoda pack() w celu dostosowania się do rozmiarów zawartości. Poprawcie mnie proszę jeśli jestem w błędzie.

Pozdrawiam
KT

0

Jaka biblioteka graficzna? Jeśli Swing, to widzę dwa rozwiązania:

  • dodawanie panelu z dodatkowymi komponentami (usuwanie panelu),
add(panel);//remove(panel);
pack();

Jeśli nowy panel ma się pojawiać po prawej, to może być FlowLayout lub BorderLayout. Ten drugi wymaga

 
add(panel,BorderLayout.EAST);

.

  • wymiana panelu, na starcie programu tworzysz dwa panele: 'smallPanelibigPanel. W oknie umieszczasz smallPanel`. A potem
remove(smallPanel);
add(bigPanel);
validate();
repaint();
0

Dzięki za pomoc..problem rozwiązany:) poniżej zamieszczam kod, może przyda się komuś na podobnym poziomie nauki javy:)

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Example extends JFrame implements ActionListener
{

JButton bOpenPanel2;
JPanel jPanel1;
JPanel jPanel2;
JFrame jFrame1;

	
	public Example()	
	{
		jFrame1= new JFrame();
		jFrame1.setTitle("Program");
		jFrame1.setLocationRelativeTo(null);
		jFrame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);	
		jFrame1.setVisible(true);
				
		bOpenPanel2 = new JButton("Open Panel 2");
		bOpenPanel2.setBounds(50,50,150,20);
		bOpenPanel2.addActionListener(this);

		jPanel1 = new JPanel();
		jPanel1.setPreferredSize(new Dimension(300,200));
		jPanel1.setBackground(Color.white);
		jPanel1.setBorder(BorderFactory.createTitledBorder("Panel1"));
		jPanel1.add(bOpenPanel2);
		
		jPanel2 = new JPanel();
		jPanel2.setPreferredSize(new Dimension(300,200));
		jPanel2.setBackground(Color.white);
		jPanel2.setBorder(BorderFactory.createTitledBorder("Panel2"));
		
		
		jFrame1.add(jPanel1);
		jFrame1.pack();
	
		
	}
	
	public static void main(String[] args)
	{
		new Example();	
		
	}

	
	public void actionPerformed(ActionEvent e)	
	{
		Object źródło = e.getSource();
		if(źródło==bOpenPanel2)
		{
	
			jFrame1.add(jPanel2, BorderLayout.EAST);
			jFrame1.pack();
			jFrame1.validate();
			jFrame1.repaint();
		
		}
	}
}

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