webForumDet fria alternativet

Få rätt på knapparna till miniräknare!

Java

9 svar · 473 visningar · startad av Mc Fetto

Medlem sedan nov. 20022 355 inlägg
Frågan#1

Tjix, jag håller på och lära mig det grafiska gränssnittet i Java och har stött på problem när det gäller att placera ut knappar och dylikt. Vill att miniräknaren ska visas som den i Windows:

789
456
123

kod:

import java.awt.*;
import java.awt.event.*;

class Blandat extends WindowAdapter implements ActionListener {
		
	private int sum;
	private String konv = "";
	private Frame f;
	private Button knapp[];
	private TextField t1;
	private Panel p,p1,p2,p3;
	public Blandat() {
		f = new Frame("MiniRäknaren MiNi");
		p=new Panel();
		p1=new Panel();
		p2=new Panel();
		p3=new Panel();
		p3.setLayout(new FlowLayout());
		//f.setLayout(new FlowLayout());
		f.addWindowListener(this);

		
		knapp = new Button[10];
		t1 = new TextField();
		f.setLayout(new BorderLayout());
		
		knapp[1]=new Button("1");
		knapp[1].addActionListener(this);
		knapp[2]=new Button("2");
		knapp[2].addActionListener(this);
		knapp[3]=new Button("3");
		knapp[3].addActionListener(this);
		knapp[4]=new Button("4");
		knapp[4].addActionListener(this);
		knapp[5]=new Button("5");
		knapp[5].addActionListener(this);
		knapp[6]=new Button("6");
		knapp[6].addActionListener(this);
		knapp[7]=new Button("7");
		knapp[7].addActionListener(this);
		knapp[8]=new Button("8");
		knapp[8].addActionListener(this);
		knapp[9]=new Button("9");
		knapp[9].addActionListener(this);

		p1.add(knapp[1]);
		p1.add(knapp[2]);
		p1.add(knapp[3]);
		
		p2.add(knapp[4]);
		p2.add(knapp[5]);
		p2.add(knapp[6]);
		
		p3.add(knapp[7]);
		p3.add(knapp[8]);
		p3.add(knapp[9]);
		
		
		p.add(p1, BorderLayout.SOUTH);
		p.add(p2, BorderLayout.CENTER);
		p.add(p3, BorderLayout.NORTH);
		
		f.add(p, BorderLayout.CENTER);
		f.add(t1, BorderLayout.NORTH);
				
		
		f.setBackground(Color.lightGray);
		f.setSize(200,150);
		f.setLocation(300,300);
		f.setVisible(true);
				
		
	}
	public void windowClosing(WindowEvent e) {
		System.exit(1);
	}
	
	public void actionPerformed(ActionEvent e) {

		int langd;
		konv = t1.getText();

		for (int i=1;i<10;i++) {
			if(e.getSource() == knapp[i]) {
				konv = konv.concat(""+i);
				t1.setText(konv);
			}
		}
			sum = Integer.parseInt(konv);
	}
		
	
	
	public static void main(String[] args) {
		Blandat BB = new Blandat();
	}
}

I miniräknaren finns det inga funktioner, håller som sagt på att lära mig det grafiska :). Ngn som vet hur tusan man ska göra för att få det att stämma?

Medlem sedan juli 200173 inlägg
#2

Varför använder du Flowlayout? Du har ju fått knapparna 1 2 3 rätt genom att använda Borderlayout. Istället för Flowlayout skulle jag använda, t ex, GridLayout.

Medlem sedan juli 200012 978 inlägg
#3

Du har väl inget mellanrum i konkanteneringssträngen?
Bra exempel
Så här skall det vara när man testar ett annat språk. Man skall göra (härma) något som finns så att man inte fastnar i detaljer om funktionerna. Lycka till. Lägg ut när du är färdig.

Medlem sedan okt. 2000149 inlägg
#4

Kolla detta exempel med GridLayput: http://www.cafeaulait.org/course/week8/26.html

Medlem sedan mars 20034 471 inlägg
#5

neox83 skrev:

Kolla detta exempel med GridLayput: http://www.cafeaulait.org/course/week8/26.html

Tror nexus83 menar GridLayout.

En GridLayout(r, k) skapar en tabell med plats för r rader och k kolumner.

Medlem sedan nov. 20022 355 inlägg
#6

Tackar så mycket :), hittade GridLayout...

Medlem sedan juli 200012 978 inlägg
#7

Nja!
Tyckte ditt exempel var renare.
Försök att få det att fungera. Rätt tänkt

Medlem sedan nov. 20022 355 inlägg
#8

Lasp skrev:

Nja!
Tyckte ditt exempel var renare.
Försök att få det att fungera. Rätt tänkt

Förstår inte riktigt vad du syftar på, är det fel att använda sig av GridLayout?

Medlem sedan juli 200173 inlägg
#9

Förstår inte riktigt heller. Om man använder FlowLayout och breddar fönstret så hamnar ju allt på samma rad, inte riktigt en miniräknare man skulle kunna känna igen...

Medlem sedan mars 20034 471 inlägg
#10

En FlowLayouts utseende kommer alltid att variera med fönsterbredden, eftersom du vill att knapparna ska sitta på ett visst sätt så är FlowLayout ingen bra idé, tycker jag.

256 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)