求Java计算器标准的布局代码

求Java计算器标准的布局代码,第1张

是用awt和swing做的,很好看比单单用AWT做好看

import javaawt;

import javaxswing;

public class Conputer extends JFrame {

protected Container con = getContentPane();// 指向内容面板

protected JMenuBar a = new JMenuBar();// 菜单

protected JMenu a1 = new JMenu("编辑(E)");// 菜单1

protected JMenu a2 = new JMenu("查看(V)");// 菜单2

protected JMenu a3 = new JMenu("帮助(H)");// 菜单3

protected JMenuItem a11 = new JMenuItem("复制(C)", 'C');// 菜单1的菜单项

protected JMenuItem a12 = new JMenuItem("粘贴(P)", 'P');// 菜单1的菜单项

protected JMenuItem a21 = new JMenuItem("标准型(T)", 'T');// 菜单2的菜单项

protected JMenuItem a22 = new JMenuItem("科学型(S)", 'S');// 菜单2的菜单项

protected JMenuItem a31 = new JMenuItem("帮助主题(H)", 'H');// 菜单3的菜单项

protected JTextField jtf = new JTextField(30);// 文本框

protected JButton[] jb = new JButton[27];

protected String[] arr = { "Backspace", "CE", "C", "MC", "7", "8", "9", "/", "sqrt",

"MR", "4", "5", "6", "", "%", "MS", "1", "2", "3", "-", "1/x",

"M+", "0", "+/-", "", "+", "=" };

protected JPanel jp = new JPanel();// 主面板

protected JPanel m = new JPanel();// 次面板

protected JPanel m1 = new JPanel();// 次次面板

protected JPanel m2 = new JPanel();// 次次面板

protected JPanel m3 = new JPanel();// 次次面板

protected JPanel m4 = new JPanel();// 次次面板

protected JPanel m5 = new JPanel();// 次次面板

protected JPanel m6 = new JPanel();// 次次面板

protected GridLayout glo = new GridLayout(6, 1, 3, 3);// 主网格布局

protected GridLayout glo1 = new GridLayout(1, 3, 3, 3);// 次网格布局

protected GridLayout glo2 = new GridLayout(1, 6, 3, 3);// 次网格布局

protected Conputer(String s) {

super(s);

a1setMnemonic('E');

a1add(a11);

a1add(a12);

a2setMnemonic('V');

a2add(a21);

a2add(a22);

a3setMnemonic('H');

a3add(a31);

aadd(a1);

aadd(a2);

aadd(a3);

thissetJMenuBar(a);// 菜单条完成

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

jb[i] = new JButton(arr[i]);

}

jpsetLayout(glo);

jpadd(m1);

m1add(jtf);

jtfsetEditable(false); jtfsetText("0"); jtfsetForeground(ColorBLUE); jtfsetBackground(ColorWHITE);

jtfsetHorizontalAlignment(JTextFieldRIGHT);//文本显示在右边

jpadd(m2);

m2setLayout(glo1);

m2add(jb[0]);

m2add(jb[1]);

m2add(jb[2]);

jpadd(m3);

m3setLayout(glo2);

m3add(jb[3]);

m3add(jb[4]);

m3add(jb[5]);

m3add(jb[6]);

m3add(jb[7]);

m3add(jb[8]);

jpadd(m4);

m4setLayout(glo2);

m4add(jb[9]);

m4add(jb[10]);

m4add(jb[11]);

m4add(jb[12]);

m4add(jb[13]);

m4add(jb[14]);

jpadd(m5);

m5setLayout(glo2);

m5add(jb[15]);

m5add(jb[16]);

m5add(jb[17]);

m5add(jb[18]);

m5add(jb[19]);

m5add(jb[20]);

jpadd(m6);

m6setLayout(glo2);

m6add(jb[21]);

m6add(jb[22]);

m6add(jb[23]);

m6add(jb[24]);

m6add(jb[25]);

m6add(jb[26]);

madd(jp);

conadd(m);

thissetResizable(false);// 不能用鼠标拉伸窗体

thissetDefaultCloseOperation(JFrameEXIT_ON_CLOSE);//可以关闭窗体

thissetSize(380, 275);

thissetVisible(true);

}

protected Conputer() {

this("计算器");

}

public static void main(String[] args) {

new Conputer("计算器");

}

}

import javaawteventKeyAdapter;

import javaawteventKeyEvent;

import javaxswingJScrollPane;

import javaxswingJTextArea;

import javaxswingJTextField;

import javaxswingWindowConstants;

public class NewJFrame extends javaxswingJFrame {

private static final long serialVersionUID = 1L;

private JScrollPane jScrollPane1;

private JTextField jTextField1;

private JTextArea jTextArea1;

{

//Set Look & Feel

try {

javaxswingUIManagersetLookAndFeel("comsunjavaswingplafwindowsWindowsLookAndFeel");

} catch(Exception e) {

eprintStackTrace();

}

}

/

Auto-generated main method to display this JFrame

/

public static void main(String[] args) {

NewJFrame inst = new NewJFrame();

instsetVisible(true);

}

public NewJFrame() {

super();

initGUI();

}

private void initGUI() {

try {

setDefaultCloseOperation(WindowConstantsDISPOSE_ON_CLOSE);

getContentPane()setLayout(null);

{

jTextField1 = new JTextField();

getContentPane()add(jTextField1);

jTextField1setBounds(14, 189, 343, 28);

jTextField1addKeyListener(new KeyAdapter() {

public void keyTyped(KeyEvent evt) {

jTextField1KeyTyped(evt);

}

});

}

{

jScrollPane1 = new JScrollPane();

getContentPane()add(jScrollPane1);

jScrollPane1setBounds(14, 14, 343, 161);

{

jTextArea1 = new JTextArea();

jScrollPane1setViewportView(jTextArea1);

jTextArea1setLineWrap(true);

}

}

setResizable(false);

pack();

thissetSize(380, 265);

setLocationRelativeTo(null);

} catch (Exception e) {

eprintStackTrace();

}

}

private void jTextField1KeyTyped(KeyEvent evt) {

if (evtgetKeyChar()==KeyEventVK_ENTER) {

jTextArea1append(jTextField1getText()+"\n");

jTextField1setText("");

}

}

}

一、继承自QPushButton,不改变本身,而是通过改变按钮背景的透明度myPushButtonh#ifndef MYPUSHBUTTON_H #define MYPUSHBUTTON_H #include <QPushButton> class myPushButton : public QPushButton { Q_OBJECT public: explicit myPushButton(QWidget parent = 0); explicit myPushButton(QString iconStr,QWidget parent=0); signals: public slots: private: void setBkPalette(int transparency);//设置透明度 protected: void enterEvent(QEvent );//鼠标进入事件 void leaveEvent(QEvent );//离开 void mousePressEvent(QMouseEvent e);//点击 void mouseReleaseEvent(QMouseEvent e);//释放 }; #endif // MYPUSHBUTTON_H myPushButtoncpp

#include "mypushbuttonh" #include <QPalette> #include <QPixmap> myPushButton::myPushButton(QWidget parent) : QPushButton(parent) { } myPushButton::myPushButton(QString iconStr, QWidget parent):QPushButton(parent) { QPixmap pixmap(iconStr); setIcon(QIcon(pixmap)); setIconSize(pixmapsize()); setBkPalette(0);//设置背景完全透明 setFlat(true); setAutoFillBackground(true); } void myPushButton::setBkPalette(int transparency)//设置背景透明度 { QPalette palette; palettesetBrush(QPalette::Button,QBrush(QColor(255,255,255,transparency))); setPalette(palette); } void myPushButton::enterEvent(QEvent ) { setBkPalette(120); } void myPushButton::leaveEvent(QEvent ) { setBkPalette(0); } void myPushButton::mousePressEvent(QMouseEvent e) { setBkPalette(150); } void myPushButton::mouseReleaseEvent(QMouseEvent e) { setBkPalette(120); emit clicked();//必须写上,否则不会发出clicked信号 } 二、背景一直为透明色,通过鼠标事件改变按钮的贴图,需要用到事件过滤器widgeth#ifndef WIDGET_H #define WIDGET_H #include <QtGui/QWidget> class myPushButton; class QPushButton; class Widget : public QWidget { Q_OBJECT public: Widget(QWidget parent = 0); ~Widget(); private: //枚举按钮的几种状态 enum btnStatus{btnNormal,btnEnter,btnClick,btnNoStatus}; myPushButton btn1;//通过改变背景透明度 QPushButton btnClose;//通过改变按钮 btnStatus btnCloseStatus; void drawClose();//给btnClose贴图 protected: bool eventFilter(QObject , QEvent );//事件过滤器 }; #endif // WIDGET_H widgetcpp

#include "widgeth" #include "mypushbuttonh" #include <QVBoxLayout> #include <QPalette> #include <QPushButton> #include <QEvent> Widget::Widget(QWidget parent) : QWidget(parent) { QPalette palette; palettesetBrush(QPalette::Window,QBrush(QColor(202,189,52))); setPalette(palette); btn1=new myPushButton(":/img/btnwifipng"); btnClose=new QPushButton; btnClose->setStyleSheet("background:transparent;border:0px;"); btnCloseStatus=btnNoStatus; drawClose(); //安装事件过滤器,处理鼠标的进入,离开,按下,释放的事件 btnClose->installEventFilter(this); QVBoxLayout mainLayout=new QVBoxLayout; mainLayout->addWidget(btn1); mainLayout->addWidget(btnClose); setLayout(mainLayout); } Widget::~Widget() { } void Widget::drawClose() { static QPixmap pixmap(":/img/btn_closepng"); static int width=pixmapwidth()/4; static int height=pixmapheight(); btnClose->setIcon(QIcon(pixmapcopy(btnCloseStatuswidth,0,width,height))); btnClose->setIconSize(QSize(width,height)); } bool Widget::eventFilter(QObject obj, QEvent event) { if(obj==btnClose) { btnCloseStatus=btnNoStatus; if(event->type()==QEvent::Enter) btnCloseStatus=btnEnter; else if(event->type()==QEvent::Leave) btnCloseStatus=btnNormal; else if(event->type()==QEvent::MouseButtonPress) btnCloseStatus=btnClick; else if(event->type()==QEvent::MouseButtonRelease) btnCloseStatus=btnEnter; if(btnCloseStatus!=btnNoStatus) drawClose(); } return QWidget::eventFilter(obj,event); }

连接的信号打错了。

QObject::connect(spinBox, SIGNAL(valueChanged(int)),

slider, SLOT(setValue(int)));

QObject::connect(slider, SIGNAL(valueChanged(int)),

spinBox, SLOT(setValue(int)));

Nebula使用详解

"Nebula"是由ElSemi所写的最好的街机模拟器之一,支持CPS-1、CPS-2、NEOGEO、IGS、Konami等,NEOGEO、IGS游戏则需要BIOS的支持,分别为neogeozip和pgmbioszip,都不解压的放入roms目录中即可,有多种画面显示处理效果,强烈推荐大家使用。

一、各文件及文件夹的说明

<CHEATS> 存放作弊文件

<CONFIG> 存放各游戏的状态以及透明表,特定控制的设定

<docs> 说明文件

<EEPROM> 游戏记忆体资料

<MACROS> 存放宏定义文件

<PLUGINS> 存放插件

<ROMDATA> 存放ROM资料

<roms> 存放ROMS文件

<SKINS> 语言包和介面样式

<INPUT> 存放录相

<SHOTS> 存放抓图,游戏的第一张抓图会成为预览图(抓图热键“F7”)

<STATES> 存放存档

historytxt: 更新历史

HOTKEYSDAT: 热键资料

kailleraclientdll: 连网插件

kovromstxt: 三国战记的ROMS资料说明

nebulaexe: 主程序

NEBULAINI: NEBULA的配置设定文件

nebulaconfigexe: 基本设定

nebulanetexe: 连网作战

PLUGSRCZIP: 外挂附件的源代码

RomInfodat: 记录ROMs的使用信息

二、运行环境

赛扬500加TNT都可以很好的运行了。平台方面Win98、WinXP都没问题,98下面建议安装DirectX 80以上版本。

三、初步设置

1、界面的选择

运行“nebulaconfigexe”,在“GUI”选项中选择“NEW window

GUI”按“Continue”,出现类似“winkawaks”的界面,选择"Classic Fullscreen

GUI"按“Continue”出现类似"Neoragex"的界面。(建议使用“NEW window

GUI”,这个界面比较直观,用起来也比较方便,下面所介绍都是以它来说的。)

2、选择语言包

执行菜单命令Misc->Language->Chinese(Simp),重新打开Nebula生效。

3、ROMS目录设置(模拟->ROM目录)

一共可以有10个ROM目录,除主目录roms不能更改,其它都可以点击空行右边的图标浏览,增加或更改ROM目录,也可以手动输入路径,相对路径也行,如“emuigsroms”(如果刻成CD的话,建议使用相对路径)

4、视频设置

主要是全屏模式(Alt+Enter全屏与窗口快速切换)。

a、分辨率

视频->全屏幕模式->分辨率->600480

b、图象增强

视频->全屏幕模式->图象增强->2xSAI(平滑扫描)。这种显示方式已很好了,如果你的机器够Power的话,试试其它方式吧,或许会有惊人的表现。运行游戏时很慢的话试试

Hardware Blit (works on 32 bpp) (硬件加速(适用32位色深))模式,还很慢的话,就加速吧

“模拟->快速模式”,还很慢的话,去借个锤子吧。

c、全屏模式

视频->全屏幕模式->不拉伸:在全屏状态下不拉伸图象,只显示原始太小;

视频->全屏幕模式->保持外表:接照比例拉伸图象至全屏幕;(建议便用这种方式)

视频->全屏幕模式->适应屏幕:拉伸图象至全屏。

d、其它选项

“垂直同步”及“三倍缓冲”都钩上吧,不过效果不是很明显。

5、声音

默认就可以了,怎么调也差不多。各机种的设置也差不多,以Neogeo为例:“声音->Neogeo->采样率->22050”,“声音->Neogeo->插补->2点”。(在运行游戏时最好不要调声音设置,有时会引起非法 *** 作)

四、载入游戏(模拟->读取ROM)

首先在“CPS-1(显示“CPS-1”游戏)、CPS-2(显示“CPS-2”游戏)、Neogeo(显示“Neogeo”游戏)、Konami(显示“Konami”游戏)、PolyGameMaster(显示“IGS”游戏)”前打钩,在All(显示所有游戏)、Available

Only(拥有的游戏)、Favorites (收藏夹的游戏)三项中选Available Only(拥有的游戏),然后点击“rescan

Roms(重新扫描游戏)”,扫描完毕后,点击左边的你所想玩的游戏,双击或点击LOAD。

五、控制设置(载入游戏方可用)

玩家1(1P):游戏->控制设置->player 1

a、Main Controls(主要控制)

无非是:投币(Coin)、Start(1P)、上、左、下、右、按键1(Button 1)至按键6

Save as Default Layout(保存为默认设置)

Load Default layout(载入默认设置)

load layout (载入设置)

save layout (保存设置)

b、Hotkeys(热键)、Buttons(热键定义)

以“西游记释厄传”为例:载入游戏,游戏->控制设置->player

1,热键1(Hotkey1)设为键盘的“A”键,在同一行上“S(开启)”、“1”、“2”、“3”前面打钩,其它的空着,点击Clase(关闭)返回游戏。按键盘上“A”试试看,是否与同时按下按键1、按键2、按键3的效果一样?

c、Per-Char Macros(宏定义)、Global Macros(通用宏定义)

Nebula的宏定义与“Winkawaks”差不多,U,D,B,F代表上下左右,组合方向,右上UF,左下是DL,依次类推,1~6代表6个键位。Nebula还可以定义多个宏特性,通过“游戏->宏设置”来选择。

以上就是关于求Java计算器标准的布局代码全部的内容,包括:求Java计算器标准的布局代码、关于JAVA 用getText()方法获取文本框textfield中的文本、Qt4.8.2 QPushButton按钮贴图以及实现按钮的几种常用状态等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: https://outofmemory.cn/web/9823199.html

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

发表评论

登录后才能评论

评论列表(0条)

保存