java的Swing里怎么new一条线_java – 在JFrame上绘制一条线
我正在嘗試使用圖形2D繪制一條線,但然后該線出現(xiàn)在所有的線上
JFrame中的其他組件因此使它們不可見.我該如何解決這個問題?
這是代碼:
import javax.swing.*;
import java.awt.*;
import java.awt.geom.*;
class Success extends JFrame{
public Success(){
JPanel panel=new JPanel();
getContentPane().add(panel);
setSize(450,450);
JButton button =new JButton("press");
panel.add(button);
}
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
Line2D lin = new Line2D.Float(100, 100, 250, 260);
g2.draw(lin);
}
public static void main(String []args){
Success s=new Success();
s.setVisible(true);
}
}
解決方法:
import javax.swing.*;
import java.awt.*;
import java.awt.geom.*;
class Success extends JFrame{
public Success(){
JPanel panel=new JPanel();
getContentPane().add(panel);
setSize(450,450);
JButton button =new JButton("press");
panel.add(button);
}
public void paint(Graphics g) {
super.paint(g); // fixes the immediate problem.
Graphics2D g2 = (Graphics2D) g;
Line2D lin = new Line2D.Float(100, 100, 250, 260);
g2.draw(lin);
}
public static void main(String []args){
Success s=new Success();
s.setVisible(true);
}
}
進一步提示
>在EDT上創(chuàng)建GUI.有關(guān)詳細(xì)信息,請參見Concurrency in Swing.
>按照@nIcEcOw的建議使用JPanel,覆蓋paintComponent(Graphics)而不是paint().再次,首先調(diào)用super方法.
>不要擴展框架,只使用一個實例.使用pack()根據(jù)組件所需的空間設(shè)置大小.
標(biāo)簽:graphics2d,java,swing,jframe
來源: https://codeday.me/bug/20191002/1840679.html
總結(jié)
以上是生活随笔為你收集整理的java的Swing里怎么new一条线_java – 在JFrame上绘制一条线的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: idm模式半导体企业是什么意思(采用id
- 下一篇: java在frame怎么计时_java