[英]Draw a String in a Frame.
我正在研究如何用Java編程。 目前,我在Swing中。 我試圖在下一個代碼框架中繪制一個字符串。
有人可以告訴我錯誤在哪里嗎?
package paquete_swing;
import javax.swing.*;
import java.awt.*;
public class graficos {
public static void main(String[] args) {
MarcoConTexto primer_texto = new MarcoConTexto();
primer_texto.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class MarcoConTexto extends JFrame {
public MarcoConTexto (){
setVisible(true);
//setBounds(400, 200, 600, 450);
setSize(600,450);
setLocation(400, 200);
setTitle("Primer Texto");
lamina milamina= new lamina();
add(milamina);
}
}
class lamina extends JPanel{
public void paintComponents(Graphics g) {
super.paintComponents(g);
g.drawString("Mi primer texto en una lamina de java",100 ,100 );
}
}
當然,我會指出錯誤。
您必須始終通過調用SwingUtilities invokeLater方法來啟動Swing應用程序。 這確保了在事件調度線程(EDT)上創建和更新了Swing組件。
類名以大寫字母開頭。 這使您和我們都能從方法名或變量名中分辨出一個類名。
正如其他人所說,必須按一定順序調用JFrame方法。 我已經重新安排了您的JFrame方法調用。
您使用Swing組件。 除非您像Lamina類中那樣重寫了組件方法之一,否則您不會擴展Swing組件。 我使用了一個JFrame。
我指定的唯一位置是Lamina工程圖JPanel。 您可以使用Swing布局將Swing組件放置在JFrame或JPanel中。
您覆蓋了paintComponents方法而不是paintComponent方法。 這是一個容易犯的錯誤。
這是帶有修正的可運行代碼。
package paquete_swing;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class Graficos implements Runnable {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Graficos());
}
@Override
public void run() {
JFrame frame = new JFrame();
frame.setTitle("Primer Texto");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Lamina milamina = new Lamina();
frame.add(milamina);
frame.setLocationByPlatform(true);
frame.pack();
frame.setVisible(true);
}
public class Lamina extends JPanel {
private static final long serialVersionUID = 4553173187556864421L;
public Lamina() {
this.setPreferredSize(new Dimension(400, 200));
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawString("Mi primer texto en una lamina de java", 100, 100);
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.