- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
首先包含一个带有文本字段的框架,一个用于提交姓名的框架,一个提交按钮以及眼睛、 Nose 和嘴巴的复选框。单击该按钮时,显示您的脸部,包括脸部下方提交的姓名。如果仅检查眼睛和 Nose ,则设置每个的大小并绘制组件来表示这些特征。
import java.awt.EventQueue;
import javax.swing.JFrame;
import java.awt.FlowLayout;
import javax.swing.JCheckBox; import javax.swing.JTextArea;
import javax.swing.JTextField; import java.awt.Color;
import java.awt.Graphics; import java.awt.SystemColor;
import javax.swing.JButton; import javax.swing.SwingConstants;
import java.awt.Font; import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JLabel;import javax.swing.JSplitPane;
import java.awt.Canvas;
import java.awt.GridLayout;import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.BoxLayout;
public class FACE extends JFrame {
private JFrame frame;
private JTextField textField;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
FACE window = new FACE();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}});
}
public FACE() {
initialize();
}
//Initialize the contents of the frame & set layout, meets requirement 5.5,
//Use layout managers to arrange user-interface components in a container
//Requirement 5.2 Add buttons, text fields, and other components to a frame window
private void initialize() {
FaceGraphic component = new FaceGraphic(rootPaneCheckingEnabled, rootPaneCheckingEnabled, rootPaneCheckingEnabled);
frame = new JFrame();
frame.setTitle("Face O Matic");
frame.setBounds(100, 100, 352, 310);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextArea txtrName = new JTextArea();
txtrName.setBounds(69, 5, 51, 26);
txtrName.setFont(new Font("Comic Sans MS", Font.PLAIN, 15));
txtrName.setEditable(false);
txtrName.setBackground(SystemColor.control);
txtrName.setText("Name :");
JLabel label = new JLabel("");
label.setBounds(125, 18, 0, 0);
textField = new JTextField();
textField.setBounds(130, 8, 126, 20);
textField.setColumns(15);
JLabel lblPlease = new JLabel("Please choose from the following to create a face!");
lblPlease.setBounds(5, 36, 305, 19);
lblPlease.setFont(new Font("Comic Sans MS", Font.PLAIN, 13));
// create check boxes
JCheckBox chckbxEyes = new JCheckBox("Eyes");
chckbxEyes.setBounds(17, 76, 51, 27);
chckbxEyes.setFont(new Font("Comic Sans MS", Font.PLAIN, 12));
chckbxEyes.setSelected(false);
JCheckBox chckbxNose = new JCheckBox("Nose");
chckbxNose.setBounds(69, 76, 53, 27);
chckbxNose.setFont(new Font("Comic Sans MS", Font.PLAIN, 12));
chckbxNose.setSelected(false);
JCheckBox chckbxMouth = new JCheckBox("Mouth");
chckbxMouth.setBounds(130, 76, 59, 27);
chckbxMouth.setFont(new Font("Comic Sans MS", Font.PLAIN, 12));
chckbxMouth.setSelected(false);
// label that states "Nice face" and than name once user hits submit
JLabel lblNiceFace = new JLabel("Nice face");
lblNiceFace.setFont(new Font("Comic Sans MS", Font.PLAIN, 13));
lblNiceFace.setBounds(177, 240, 133, 20);
frame.getContentPane().add(lblNiceFace);
JButton btnSubmit = new JButton("Submit");
btnSubmit.setBounds(220, 75, 90, 27);
btnSubmit.addActionListener(new ActionListener() {
// Handle events that are generated by buttons, meets
// Requirement 5.3
public void actionPerformed(ActionEvent event) {
// print name to niceFace label from textField once user inputs and hits submit
String name = textField.getText();
lblNiceFace.setText("Nice face " + name + "!");
}
});
//add button, labels, check boxes, etc.. to contentPane
btnSubmit.setFont(new Font("Comic Sans MS", Font.PLAIN, 13));
frame.getContentPane().setLayout(null);
frame.getContentPane().add(txtrName);
frame.getContentPane().add(textField);
frame.getContentPane().add(lblPlease);
frame.getContentPane().add(chckbxEyes);
frame.getContentPane().add(chckbxNose);
frame.getContentPane().add(chckbxMouth);
frame.getContentPane().add(btnSubmit);
frame.getContentPane().add(component);
}
}
您好,我对 GUI 还很陌生,这就是我到目前为止所拥有的。我遇到的问题是能够连接并创建一个事件监听器到我的复选框,一旦我点击提交,用于创建笑脸的图形就会出现在给定的坐标处;这就是我的面部图形类。
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;
public class FaceGraphic extends JPanel {
private boolean hasEyes;
private boolean hasNose;
private boolean hasMouth;
public FaceGraphic(boolean hasEyes, boolean hasNose, boolean hasMouth) {
setParameters(hasEyes, hasNose, hasMouth);
}
public void setParameters(boolean hasEyes, boolean hasNose, boolean hasMouth) {
this.hasEyes = hasEyes;
this.hasNose = hasNose;
this.hasMouth = hasMouth;
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.yellow);
g.fillOval(100, 100, 100, 100); // head
g.setColor(Color.black);
if (hasEyes) {
g.fillOval(120, 125, 20, 20); // left eye
g.fillOval(160, 125, 20, 20); // right eye
}
if (hasNose)
g.drawLine(150, 165, 150, 150); // nose
if (hasMouth)
g.drawArc(120, 130, 60, 60, 0, -180); // mouth
}
}
我如何让我的提交按钮绘制图像,无论头部是什么,以及眼睛、 Nose 或嘴巴或全部等。
更新截至 2016 年 10 月 27 日
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class CheckBoxDemo extends JPanel
implements ItemListener {
JCheckBox eyes;
JCheckBox nose;
JCheckBox mouth;
StringBuffer choices;
private JTextField textField;
public CheckBoxDemo() {
choices = new StringBuffer("cght");
setLayout(null);
nose = new JCheckBox("Nose");
nose.setBounds(92, 57, 69, 23);
add(nose);
//nose.setMnemonic(KeyEvent.VK_G);
nose.setSelected(false);
nose.addItemListener(this);
mouth = new JCheckBox("Mouth");
mouth.setBounds(186, 57, 69, 23);
add(mouth);
//mouth.setMnemonic(KeyEvent.VK_H);
mouth.setSelected(false);
mouth.addItemListener(this);
//Create the check boxes.
eyes = new JCheckBox("Eyes");
eyes.setBounds(6, 57, 69, 23);
add(eyes);
//eyes.setMnemonic(KeyEvent.VK_C);
eyes.setSelected(false);
eyes.addItemListener(this);
JLabel lblNewLabel = new JLabel("Please choose from the following to create a face!");
lblNewLabel.setBounds(6, 11, 312, 14);
add(lblNewLabel);
JLabel lblPleaseEnterYour = new JLabel("Please enter your name: ");
lblPleaseEnterYour.setBounds(6, 36, 155, 14);
add(lblPleaseEnterYour);
textField = new JTextField();
textField.setBounds(153, 30, 100, 20);
add(textField);
textField.setColumns(10);
JLabel lblNiceFace = new JLabel("");
lblNiceFace.setFont(new Font("Tahoma", Font.PLAIN, 13));
lblNiceFace.setBounds(153, 240, 133, 20);
add(lblNiceFace);
JButton btnSubmit = new JButton("Submit");
btnSubmit.setBounds(28, 240, 89, 23);
btnSubmit.addActionListener(new ActionListener() {
// Handle events that are generated by buttons, meets
// Requirement 5.3
public void actionPerformed(ActionEvent event) {
// print name to niceFace label from textField once user inputs and hits submit
String name = textField.getText();
lblNiceFace.setText("Nice face " + name + "!");
}});
add(btnSubmit);
}
/** Listens to the check boxes. */
public void itemStateChanged(ItemEvent e) {
int index = 0;
char c = '-';
Object source = e.getItemSelectable();
if (source == eyes) {
index = 0;
c = 'c';
} else if (source == nose) {
index = 1;
c = 'g';
} else if (source == mouth) {
index = 2;
c = 'h';
}
//Now that we know which button was pushed, find out
//whether it was selected or not.
if (e.getStateChange() == ItemEvent.DESELECTED) {
c = '-';
}
//Apply the change to the string.
choices.setCharAt(index, c);
repaint();
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.yellow);
g.fillOval(100, 100, 100, 100); // head
g.setColor(Color.black);
if (eyes.isSelected()) {
g.fillOval(120, 125, 20, 20); // left eye
g.fillOval(160, 125, 20, 20); // right eye
}
if (nose.isSelected())
g.drawLine(150, 165, 150, 150); // nose
if (mouth.isSelected())
g.drawArc(120, 130, 60, 60, 0, -180); // mouth
}
public static void createAndShowGUI() {
//Create and set up the window.
JFrame frame = new JFrame("FaceOMatic");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setPreferredSize(new Dimension (350, 325));
//Create and set up the content pane.
JComponent newContentPane = new CheckBoxDemo();
newContentPane.setOpaque(true); //content panes must be opaque
frame.setContentPane(newContentPane);
//Display the window.
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
最佳答案
当你想画脸时,你需要名字以及是否画眼睛、 Nose 和/或嘴巴。我将为可以使用这些参数构造的 FaceGraphic 创建一个单独的类。您可以使用 drawString
方法将名称添加到图形中。
例如:
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;
public class FaceGraphic extends JPanel {
private String name;
private boolean hasEyes;
private boolean hasNose;
private boolean hasMouth;
public FaceGraphic(String name, boolean hasEyes, boolean hasNose, boolean hasMouth) {
setParameters(name, hasEyes, hasNose, hasMouth);
}
public void setParameters(String name, boolean hasEyes, boolean hasNose, boolean hasMouth) {
this.name = name;
this.hasEyes = hasEyes;
this.hasNose = hasNose;
this.hasMouth = hasMouth;
}
@Override
protected void paintComponent(Graphics graphics) {
super.paintComponent(graphics);
graphics.setColor(Color.yellow);
// head
graphics.fillOval(100, 100, 100, 100);
graphics.setColor(Color.black);
// name
graphics.drawString(name, 150, 50);
if (hasEyes) {
// left eye
graphics.fillOval(120, 125, 20, 20);
// right eye
graphics.fillOval(160, 125, 20, 20);
}
if (hasNose)
// nose
graphics.drawLine(150, 165, 150, 150);
if (hasMouth)
// mouth
graphics.drawArc(120, 130, 60, 60, 0, -180);
}
}
编辑:调用setParameters
的示例
您可以在提交按钮的事件处理程序中添加对 setParameters
方法的调用:
JButton btnSubmit = new JButton("Submit");
btnSubmit.setBounds(220, 75, 90, 27);
btnSubmit.addActionListener(new ActionListener() {
// Handle events that are generated by buttons, meets
// Requirement 5.3
public void actionPerformed(ActionEvent event) {
// print name to niceFace label from textField once user inputs and hits submit
String name = textField.getText();
lblNiceFace.setText("Nice face " + name + "!");
component.setParameters(name, chckbxEyes.isSelected(),
chckbxNose.isSelected(), chckbxMouth.isSelected());
component.repaint();
}
});
关于java - JCheckBox,提交选择后创建一个事件并将图形打印到 GUI 框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40183993/
有没有更好的方法用 PHP 将数据输出到 html 页面? 如果我想在 php 中用一些 var 制作一个 div,我会写类似的东西 print (''.$var.''); 或 echo "''.$v
我可以使用 java awt print 来打印文档/文件而不是使用 javax print 吗?我发现在 java awt print 中有一个选项可以使用 AttributedString 将内容
目前我通过以下方式运行 R 脚本: R --slave argument1 argument2 ... 我想知道 R 中关于如何退出脚本并发出警告的最佳实践,q() 会这样做吗? if(!file.
谁能告诉我如何编写一个程序,用 gcc 编译时打印 c ,用 g++ 编译时打印 c++? 最佳答案 #ifdef __cplusplus printf("c++\n"); #else
我需要支持在 KitKat 设备上打印,但我的目标 SDK 是 13(无法更改)。 特别是我需要打印一个 webview。 这是用于打印 webview 的 API: http://developer
我正在尝试创建一个简单的函数,其中 python 将根据您的年份输入计算年龄。我已经尝试了几种方法,但我没有运气 atm。 附:对不起,我是新手。 ame = input(" Enter your n
JavaFX 2.0 是否支持打印?我有一个文本区域,我从中获取文本然后我想打印它,但似乎没有这个功能。 当然,这里我说的是打印到打印机。 :) 最佳答案 尚不支持。作为一种解决方法,您可以使用 Ja
我试图找出printOn的重点。我查看了一些实现它的类,看起来它只是帮助打印不同数据类型的单位。这是准确的吗? 如果是这样,有人能指出我如何为我自己的类(class)实现这一点的正确方向吗?我将在可能
我无法让 IE 打印我的 Canvas (使用 excanvas 生成)...我使用的是最新版本的 excanvas。 http://dl.dropbox.com/u/997831/canvas.ht
我搜索了很多但没有人回答我的问题,我读到在这样的信号处理程序中使用 cout 是不安全的: void ctrlZHandler(int sig_num) { //SIGTSTP-18
我有兴趣打印一系列查询。我有以下代码。 start = datetime.datetime(2012, 2, 2, 6, 35, 6, 764) end = datetime.datetime(201
public class javaClass { public static void main(String [] arg) { String row1 = "A____A"
我需要写入前一行的命令,例如不带\n 的 print()。 下面是一些示例代码: a=0 print("Random string value") if a==0: print_to_prev
我有一个使用 UIKit 和 Objective C 的旧 iOS 应用程序,我目前正在将其移植到 SwiftUI 和 Swift。一切都很顺利,我喜欢 Swift 和 SwiftUI。该应用程序已经
我创建了一个求和函数,它接受一个开始编号和一个结束编号,并返回这两点之间的总和答案 def print_sum_equations(start_number,end_number):
在 Perl 6 中,print 和有什么区别? , put和 say ? 我怎么看 print 5不同,但 put 5和 say 5看起来一样。 最佳答案 put $a就像 print $a.Str
我正在使用 here 中的 getOrgChart 库,我正在尝试打印整个图表,而不仅仅是可见部分。不幸的是,当使用标准库打印功能时,它只会打印出第一部分,而我不知道如何打印整个图表(该图表相当宽,大
我制作了一个非常适合 A4 页面的 View 。现在我想打印它。请注意,我没有使用drawRect或类似的东西,只是一个带有 subview 和文本标签的普通 View 。我的问题是,我对该 View
由于 Cocoa-Java 已弃用,我正在将 Cocoa-Java 代码迁移到 Cocoa + JNI。该代码打印存储在文件中的图像。新的 Cocoa 代码基本上是: NSImage *image =
这个问题已经有答案了: Printing a TDBGrid (4 个回答) 已关闭 6 年前。 如何在不安装或下载组件的情况下打印 DBGrid? 或者 如何将 DBGrid 的数据放入 RichE
我是一名优秀的程序员,十分优秀!