编写图形界面下的Java Applet程序,接受用户输入的两个数据为上、下限,然后输出上、下限之间的所有素数。

编写图形界面下的Java Applet程序,接受用户输入的两个数据为上、下限,然后输出上、下限之间的所有素数。,第1张

import javaawteventActionEvent;

import javaawteventActionListener;

import javaxswingJFrame;

import javaxswingJOptionPane;

public class Linglinggong77 extends JFrame {

public Linglinggong77() {

initComponents();

}

private void initComponents() {

jScrollPane1 = new javaxswingJScrollPane();

jTextArea1 = new javaxswingJTextArea();

jPanel1 = new javaxswingJPanel();

jLabel1 = new javaxswingJLabel();

jTextField1 = new javaxswingJTextField();

jLabel2 = new javaxswingJLabel();

jTextField2 = new javaxswingJTextField();

jButton1 = new javaxswingJButton();

setDefaultCloseOperation(javaxswingWindowConstantsEXIT_ON_CLOSE);

jTextArea1setEditable(false);

jTextArea1setColumns(20);

jTextArea1setRows(5);

jScrollPane1setViewportView(jTextArea1);

getContentPane()add(jScrollPane1, javaawtBorderLayoutCENTER);

jPanel1setLayout(new javaawtFlowLayout(javaawtFlowLayoutCENTER,

25, 5));

jLabel1setText("上限");

jPanel1add(jLabel1);

jTextField1setColumns(10);

jPanel1add(jTextField1);

jLabel2setText("下限");

jPanel1add(jLabel2);

jTextField2setColumns(10);

jPanel1add(jTextField2);

jButton1setText("确认");

jPanel1add(jButton1);

jButton1addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

sureAction();

}

});

getContentPane()add(jPanel1, javaawtBorderLayoutNORTH);

pack();

}// </editor-fold>

protected void sureAction() {

// TODO Auto-generated method stub

try {

int a = IntegerparseInt(jTextField1getText()trim());

int b = IntegerparseInt(jTextField2getText()trim());

m(a, b);

} catch (Exception e) {

// TODO: handle exception

JOptionPaneshowMessageDialog(null, "请输入数字");

jTextField1setText("");

jTextField2setText("");

jTextArea1setText("");

}

}

private void m(int m, int n) {

// TODO Auto-generated method stub

String s = "";

int total = 0;

int sum = 0;

boolean f = true;

if (m == 1) {

m = 2;

}

for (int i = m; i <= n; i++) {

f = true;

for (int j = 2; j <= i / 2; j++) {

if (i % j == 0) {

f = false;

break;

}

}

if (f == true) {

total++;

sum += i;

s = s + "第" + total + ":" + i + "\n";

jTextArea1setText(s);

}

}

}

/

@param args

the command line arguments

/

public static void main(String args[]) {

Linglinggong77 m = new Linglinggong77();

msetVisible(true);

msetSize(500, 300);

}

// Variables declaration - do not modify

private javaxswingJButton jButton1;

private javaxswingJLabel jLabel1;

private javaxswingJLabel jLabel2;

private javaxswingJPanel jPanel1;

private javaxswingJScrollPane jScrollPane1;

private javaxswingJTextArea jTextArea1;

private javaxswingJTextField jTextField1;

private javaxswingJTextField jTextField2;

// End of variables declaration

}

import javaawtBorderLayout;

import javaawteventActionEvent;

import javaawteventActionListener;

import javaxswingJButton;

import javaxswingJFrame;

import javaxswingJPanel;

import javaxswingJScrollPane;

import javaxswingJTextArea;

public class Main extends JFrame {

private JTextArea text1 = null;

private JTextArea text2 = null;

private JButton copyButton = null;

public Main() {

super("测试");

init();

JPanel pane = new JPanel(null);

getContentPane()add(pane);

JScrollPane s1 = new JScrollPane(text1);

JScrollPane s2 = new JScrollPane(text2);

paneadd(s1);

paneadd(s2);

s1setBounds(10, 10, 200, 300);

s2setBounds(260, 10, 200, 300);

getContentPane()add(copyButton, BorderLayoutSOUTH);

setDefaultCloseOperation(JFrameEXIT_ON_CLOSE);

setSize(480, 380);

setLocationRelativeTo(null);

setVisible(true);

}

/

初始化组件对象

/

private void init(){

text1 = new JTextArea();

text2 = new JTextArea();

copyButton = new JButton("复制");

copyButtonaddActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

copy();

}

});

}

private void copy(){

text2setText(text1getText());

}

public static void main(String[] args) {

new Main();

}

}

只提指导,没有源码。

在 Java 中要自定义组件,一般是覆盖掉 protected void paintComponent(Graphics g); 方法就可以了,对于你这个类似画笔的程序,首先,整个画布是一个自定义的继承自像 JPanel 一样的东西,不过我们需要覆盖它的 paintComponent 方法,因为:一、我们需要在当鼠标拖放一个东西时我们移动这个选中的图形时记住它的位置;二、设定 label 时需要保存它的 Label。三、知道图形的形状。

,然后在 paintComponent 时依次画出各个图形来。

要绘图:

1、直线,gdrawLine(x,y,x2,y2); // 参数分别是起止点坐标

2、矩形,gfillRect(x, y, w, h); // 参数分别是左上角坐标和宽及高。

3、椭圆,gfillOval(x, y, w, h); // 参数分别是椭圆形的外切矩形的左上角坐标及宽和高,当w 和 h 相等时是个圆。

准备绘图前 gsetColor() 设置前景色;先把整个画布用 gfillRect() 涂成白色,再分别画各个图形,最后绘制 Label 应该在画图形之后再做。

移动图形,是给 画布组件 addMouseMotionListener 来监听事件的,在拖动时先通过 mouseDragged 事件的 MouseEventpoint 知道它的位置是在哪个图形的内部,之后的移动就修改这个图形的位置。

这段代码你参考一下。可以运行的package common;public class test {

public static void main(String[] args){

Pentagram pen = new Pentagram(10,0,' ','★');

DrawprintCanvas(pengetPentagram());

}

}// Pentagramjava 五角星类

class Pentagram {

private final char FILL_CHAR; // 填充字符

private final char SPACE_CHAR; // 空档字符

private final int R; // 五角星的外接圆半径

private final float ROTATION; // 五角星逆时针旋转角度

private final int X; // 用于生成画图数组

private final int Y; // 用于生成画图数组 /

构造一个Pentagram对象

@param radius

五角星的半径

@param rotation

五角星的逆时针旋转度数

@param spaceChar

画布上空白处填充字符

@param fillChar

画布上线条部分填充字符

/

public Pentagram(int radius, float rotation, char spaceChar, char fillChar) {

thisR = radius;

thisROTATION = rotation;

thisFILL_CHAR = fillChar;

thisSPACE_CHAR = spaceChar;

thisX = 2 R + 1;

thisY = 2 R + 1;

} public char[][] getPentagram() {

char[][] canvas = initCanvas();

Draw draw = new Draw(FILL_CHAR);

// 设五角星的最右边的一个点为 A,逆时针选取点 B~E

// 通过圆的极坐标公式可以得出:

// 得出以下各点的坐标

// A 点坐标(0951R, 0309R)

// B 点坐标(0, R)

// C 点坐标(-0951R, 0309R)

// D 点坐标(-0588R, -0809R)

// E 点坐标(0588R, -0809R)

// 画线段CA

drawdrawLine(mcos(162) R, msin(162) R, mcos(18) R, msin(18) R,

canvas);

// 画线段DA

drawdrawLine(mcos(234) R, msin(234) R, mcos(18) R, msin(18) R,

canvas);

// 画线段CE

drawdrawLine(mcos(162) R, msin(162) R, mcos(306) R, msin(306)

R, canvas);

// 画线段DB

drawdrawLine(mcos(234) R, msin(234) R, mcos(90) R, msin(90) R,

canvas);

// 画线段BE

drawdrawLine(mcos(90) R, msin(90) R, mcos(306) R, msin(306) R,

canvas);

return canvas;

} // 在方形的字符数组中指定两点画线条

// 对图形数组进行初始化,填充空格

private char[][] initCanvas() {

char[][] canvas = new char[Y][X];

for (int i = 0; i < Y; i++) {

for (int j = 0; j < X; j++) {

canvas[i][j] = SPACE_CHAR;

}

}

return canvas;

} // 根据角度求正弦值,保留两位小数

private double msin(float a) {

return ((int) (Mathsin(MathtoRadians(a + ROTATION)) 100)) / 1000;

} // 根据角度求余弦值,保留两位小数

private double mcos(float a) {

return ((int) (Mathcos(MathtoRadians(a + ROTATION)) 100)) / 1000;

}

}// Drawjava 画图工具类

class Draw {

private char fillChar; public Draw(char fillChar) {

thisfillChar = fillChar;

} /

根据两个点画线在二维字符数组上画线

@param x1

@param y1

@param x2

@param y2

@param canvas

/

public void drawLine(double x1, double y1, double x2, double y2,

char[][] canvas) {

int radius = (canvaslength - 1) / 2;

// 从 x 方向进行填充

if (x1 > x2) {

double t = x1;

x1 = x2;

x2 = t;

t = y1;

y1 = y2;

y2 = t;

}

// 获得直线方程的两个系数

double a = (y1 - y2) / (x1 - x2);

double b = y1 - a x1;

// 根据 x 方向的值求出 y 值,并填充图形

for (int i = (int) Mathround(x1); i <= (int) Mathround(x2); i++) {

// 根据直线方程 y = ax + b,求 y

int y = (int) Mathround(a i + b);

// 因为 y 和 i 算出来的结果有可能是负数,

// 为了采用数组来表示坐标,做了以下变换

// c[R][R] 即为坐标原点

// c[R][0R] 为 x 方向的负半轴

// c[R][R+12R] 为 x 方向的正半轴

// c[0R][R] 为 y 方向的正半轴

// c[R+12R][R] 为 y 方向的负半轴

int yy = radius - y;

int xx = radius + i;

yy = yy < 0 0 : yy;

yy = yy > 2 radius 2 radius : yy;

xx = xx < 0 0 : xx;

xx = xx > 2 radius 2 radius : xx;

canvas[yy][xx] = fillChar;

}

// 从 y 方向进行填充,便于减少间距问题产生的字符空档

if (y1 > y2) {

double t = x1;

x1 = x2;

x2 = t;

t = y1;

y1 = y2;

y2 = t;

}

// 根据 y 方向的值求出 x 值,并填充图形

for (int i = (int) Mathround(y1); i <= (int) Mathround(y2); i++) {

// 根据 x = (y - b) / a,求 x

int y = (int) Mathround((i - b) / a);

int yy = radius - i;

int xx = radius + y;

yy = yy < 0 0 : yy;

yy = yy > 2 radius 2 radius : yy;

xx = xx < 0 0 : xx;

xx = xx > 2 radius 2 radius : xx;

canvas[yy][xx] = fillChar;

}

} /

将画完图之后的画布输出到控制台上

@param canvas

/

public static void printCanvas(char[][] canvas){

for (int i = 0; i < canvaslength; i++) {

for (int j = 0; j < canvas[i]length; j++) {

Systemoutprint(canvas[i][j]);

}

Systemoutprintln();

}

}

}

方法一:

JLabel label = new JLabel(new ImageIcon("路径"));

方法二:

重载JComponent里面的 paintComponent()方法,在里面用grahicsdrawImage()绘制图象;

import javaio;

/

输入整数n,输出由n行n列星号字符组成的三角形图案

@author user

/

public class Xing2 {

public static void main(String[] args) {

Systemoutprint("请输入一个正整数:");

InputStreamReader isr = new InputStreamReader(Systemin);

BufferedReader br = new BufferedReader(isr);

try {

String s = brreadLine();

while (s != null) {

if (sequalsIgnoreCase("exit"))

break;

int num = IntegerparseInt(s);

for(int i=1; i<=num; i++) {

for(int j=0; j<num-i; j++) {

Systemoutprint(" ");

}

for(int t=0; t<2i-1; t++) {

Systemoutprint("");

}

Systemoutprintln();

}

Systemoutprintln("输入exit退出,现在就是见证奇迹的时刻!");

Systemoutprint("同样请输入一个正整数:");

s = brreadLine();

}

brclose();

} catch (IOException e) {

eprintStackTrace();

}

}

}

这是完美答案

使用java的for的嵌套循环编写程序,显示直线递增星号图案和直角三角形星号图案如下:

public class TestD {

public static void main(String[] args){

Systemoutprintln("直线递增型:");

//直线递增型

for(int x=0;x<=5;x++){

//每一组打印多少x个星号

for(int y=0;y<=x;y++){

Systemoutprint("");

}

//不同组以空格隔开

Systemoutprint(" ");

}

Systemoutprintln();

Systemoutprintln("直角三角形:");

//直角三角形

for(int x=0;x<=5;x++){

//每一组打印多少x个星号

for(int y=0;y<=x;y++){

Systemoutprint("");

}

//不同组不同行需换行

Systemoutprintln("");

}

}

}

结果:

直线递增型:

      

直角三角形:

以上就是关于编写图形界面下的Java Applet程序,接受用户输入的两个数据为上、下限,然后输出上、下限之间的所有素数。全部的内容,包括:编写图形界面下的Java Applet程序,接受用户输入的两个数据为上、下限,然后输出上、下限之间的所有素数。、java图形界面程序,当单击按钮时把一个文本框当前内容复制到另一个文本框中、如何实现java画图程序,并可在已画的图上添加文字等,求大神T-T等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zz/9340456.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存