gpt4 book ai didi

java - 使用 graphics2d 将文本字段添加到 jframe

转载 作者:行者123 更新时间:2023-11-29 05:16:18 25 4
gpt4 key购买 nike

public class Contact {
int x0,x1,y2=1500,x3=1500,a=0;
JFrame jf;
private JTextField name = new JTextField();
private JTextField phone;
private JButton start;
boolean clicked=false;

static Dimension dim=Toolkit.getDefaultToolkit().getScreenSize();
static int w=(int)dim.getWidth(); static int h=(int)dim.getHeight();
IntroInner d=new IntroInner(); int c;

public Contact() {

}

public void build() throws Exception{

jf=new JFrame("THE COUNTRY CLUB");
jf.getContentPane().add(d);
jf.setSize(w,h);
jf.setVisible(true);
jf.setAlwaysOnTop(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public class IntroInner extends JPanel{

public void paintComponent(Graphics g1){

Graphics2D g=(Graphics2D) g1;

FontMetrics metrics = g.getFontMetrics();
int xpos=(int)Toolkit.getDefaultToolkit().getScreenSize().getWidth()/2-215;

setFont(new Font("serif",Font.ITALIC,40));

g.setColor(Color.black);
g.fillRect(0,0,this.getWidth(),this.getHeight());

Image im1=new ImageIcon("Images/bg.jpg").getImage();
g.drawImage(im1,0,0,this);

//g.rotate(a);
Image im=new ImageIcon("Images/logo.png").getImage();
g.drawImage(im,xpos,50,this);

g.setColor(Color.white);

g.drawString("Please Enter Your Details",400,400);

g.drawString("Name:",400,475);

g.drawString("Contact No:",400,550);
}
}

public static void main(String[] args) throws Exception{
new Contact().build();
}
}

我引用了很多有关在 java 中使用 graphics2d 将文本字段实现到 java 框架的问题。但没有得到任何有用的意见。我也在 stackoverflow 中找到了一些东西。但这对我也没有帮助。任何人都可以帮助我吗?该程序的预期输出如下:提前致谢。

enter image description here

最佳答案

好的,所以您可能需要退后一步,看看这里的两个方面:

  • 一个方面是您可以直接在 Graphics2D 对象上绘图、打印字符串、绘制线条、填充矩形等...虽然在某些情况下这可能非常有趣(如果您想执行非常自定义的绘图,例如),这是一种非常低级的方法。你负责做很多事情。如果你考虑处理一个文本字段,这意味着你必须绘制背景、边框、输入的字符串、制作闪烁的插入符等……这很容易变得非常麻烦和维护起来乏味
  • 另一方面是 Swing 提供了一堆组件,这些组件已经完成了我刚才谈到的所有繁琐工作。虽然它不能处理所有情况,但简单的情况,如标签、文本字段、图像等......已经有一个内置的实现,基本上可以避免你自己做的繁琐工作。留给您的唯一事情就是解释您希望组件出现的方式和位置。这就是 LayoutManager 发挥作用的地方。

这是一个小例子(在许多其他例子中),它向您展示了做这种事情的要点:

import java.awt.BorderLayout;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.net.MalformedURLException;
import java.net.URL;

import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;


public class BasicSwingTest {

protected void initUI() throws MalformedURLException {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel image = new JLabel(new ImageIcon(new URL("http://upload.wikimedia.org/wikipedia/commons/thumb/4/45/Duke3D.png/220px-Duke3D.png")));
frame.setLayout(new BorderLayout());
frame.add(image, BorderLayout.WEST);
JPanel mainPanel = new JPanel(new GridBagLayout());
JPanel panel = new JPanel(new GridLayout(0, 2));
panel.add(new JLabel("Name: "));
JTextField name = new JTextField(20);
panel.add(name);
panel.add(new JLabel("Contact no: "));
JTextField contactNumber = new JTextField(15);
panel.add(contactNumber);
panel.setBorder(BorderFactory.createTitledBorder("Enter your details"));
mainPanel.add(panel);
frame.add(mainPanel);
frame.pack();
frame.setVisible(true);
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
try {
new BasicSwingTest().initUI();
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
});
}


}

结果:

enter image description here

这是第二个示例(虽然需要一些调整,但看起来更像您的图像):

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.net.MalformedURLException;
import java.net.URL;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;

public class BasicSwingTest2 {

private static final Font FONT = new Font("Times New Roman", Font.PLAIN, 18);

protected void initUI() throws MalformedURLException {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());

JLabel contentPane = new JLabel(new ImageIcon(new URL("http://www.pd4pic.com/images/blue-background-simple.jpg")));
contentPane.setLayout(new BorderLayout());
frame.add(contentPane, BorderLayout.CENTER);
GridBagConstraints gbc = new GridBagConstraints();
gbc.weightx = 0;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.anchor = GridBagConstraints.WEST;
JPanel panel = new JPanel(new GridBagLayout());
panel.setOpaque(false);
JTextField name = new JTextField(20);
JTextField contactNumber = new JTextField(15);

panel.add(getLabel("Name: "), gbc);
gbc.gridwidth = GridBagConstraints.REMAINDER;
panel.add(name, gbc);
gbc.gridwidth = GridBagConstraints.RELATIVE;
panel.add(getLabel("Contact no: "), gbc);
gbc.gridwidth = GridBagConstraints.REMAINDER;
panel.add(contactNumber, gbc);

JLabel topLabel = getLabel("Please enter you details");
topLabel.setHorizontalAlignment(JLabel.CENTER);
contentPane.add(topLabel, BorderLayout.NORTH);
contentPane.add(panel, BorderLayout.CENTER);

frame.pack();
frame.setVisible(true);
}

private JLabel getLabel(String text) {
JLabel label = new JLabel(text);
label.setFont(FONT);
label.setForeground(Color.WHITE);
return label;
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
try {
new BasicSwingTest2().initUI();
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
});
}

}

关于java - 使用 graphics2d 将文本字段添加到 jframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26453728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com