webForumDet fria alternativet

GUI: min bild syns knappt

Java

1 svar · 408 visningar · startad av Inte-net

Medlem sedan maj 20011 inlägg
Frågan#1

När jag skrivit koden nedan så startar jag mitt grafiska fönster. Koden skall visa en bild längst upp som e som en överskrift samt en textarea tillsammans med en bild i mitten. De delar 50/50 på fönstret. Längst ner återfinns en textfield där man skriver samt en skicka knapp... som en chat ungefär. Problemet är att bilden längst upp blir jätteliten, 10 px hög då den ska vara 10 ggr högre. Vad kan detta bero på?

Koden:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Grafik extends JFrame{
JTextArea text;

static Grafik control;

	public Grafik(){

		super("Slaget om Märsta - Version 1.0");

		CloseLyssnare cl=new CloseLyssnare();
		addWindowListener(cl);

      Image bild = Toolkit.getDefaultToolkit().getImage("minbild.gif");
      ImagePanel imgPane = new ImagePanel(bild);

      Image logo = Toolkit.getDefaultToolkit().getImage("logo.gif");
      ImagePanel imgLogo = new ImagePanel(logo);

getContentPane().setLayout(new BorderLayout());

JTextField field=new JTextField();
JButton dobutton=new JButton("Action");
dobutton.addActionListener(cl);
text=new JTextArea();
text.setEditable(false);

JPanel pane;
pane = new JPanel();
pane.setLayout(new GridLayout(1, 2));
pane.add(text);
pane.add(imgPane);

getContentPane().add(pane, BorderLayout.CENTER);

pane = new JPanel();
pane.setLayout(new GridLayout(1,2));
pane.add(field);
pane.add(dobutton);

getContentPane().add(pane, BorderLayout.SOUTH);

pane = new JPanel();
pane.setLayout(new GridLayout(1,1));
pane.add(imgLogo);

getContentPane().add(pane, BorderLayout.NORTH);

setBackground(Color.black);
setSize(800, 600);
show();
setVisible(true);

}

public static void main(String[] argv){
control=new Grafik();
control.run();

}

public void run() {

	text.append("TEXTER!");

}

}

class CloseLyssnare extends WindowAdapter implements ActionListener{

public void actionPerformed(ActionEvent ae){
	System.exit(0);

}

public void windowClosing(WindowEvent we){

	System.exit(0);

}

}

class ImagePanel extends JPanel {
Image image;

public ImagePanel(Image image) {
	this.image = image;
}

public void paintComponent(Graphics g) {
	super.paintComponent(g);
	g.drawImage(image, 0, 0, this);
}

}

------------------
--> *äää* <--

Medlem sedan juni 20008 205 inlägg
#2

Ääh... varför göra en massa trams själv, när du kan använda en JLabel?

public class Grafik extends JPanel{
	private JLabel rubrikLbl;
	private JTextArea text;
	// ev. andra deklarationer...

	public Grafik(){
		super("Slaget om Märsta - v/1.0");
		Icon bilden = new ImageIcon("rubrik.png");
		rubrikLbl = new JLabel(bilden);
	// etc
	}
}

------------------
These are the cries of the carrots, the cries of the carrots! You see, Reverend Maynard, tomorrow is harvest day and to them it is the holocaust.

261 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)